Community
Participate
Working Groups
Deploying an application to Websphere Application Server 6.1.27, using Spring Framework to look up a JMS topic causes and exception on startup as Spring tries to create the WebApplicationContext. (Stack trace attached). Spring config for the JMS beans: <jee:jndi-lookup id="jmsTopic" jndi-name="jms/RepositoryTopic" /> <jee:jndi-lookup id="jmsTopicConnectionFactory" jndi-name="jms/RepositoryTopicConnectionFactory" /> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory"> <ref bean="jmsTopicConnectionFactory" /> </property> <property name="defaultDestination"> <ref bean="jmsTopic" /> </property> <property name="receiveTimeout"> <value>30000</value> </property> </bean> Spring AOP is included in the project, but it should not be applying any aspects to the JMS beans (and I don't think it would, but this exception seems to occur while trying to figure out that it shouldn't). This exception does not occur when using aspectj 1.6.6. I did not try using 1.6.7.
Created attachment 158888 [details] stack trace
Do you expect the type 'com.ibm.ws.sib.api.jms.JmsInternalConstants' to be around and accessible?
Caused by: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException: warning can't determine implemented interfaces of missing type com.ibm.ws.sib.api.jms.JmsInternalConstants [Xlint:cantFindType] at org.aspectj.weaver.reflect.ReflectionWorld$ExceptionBasedMessageHandler.handleMessage(ReflectionWorld.java:129) at org.aspectj.weaver.Lint$Kind.signal(Lint.java:316) at org.aspectj.weaver.MissingResolvedTypeWithKnownSignature.raiseCantFindType(MissingResolvedTypeWithKnownSignature.java:232) at org.aspectj.weaver.MissingResolvedTypeWithKnownSignature.getDeclaredInterfaces(MissingResolvedTypeWithKnownSignature.java:86) at org.aspectj.weaver.ResolvedType$2.get(ResolvedType.java:304) at org.aspectj.weaver.ResolvedType$2.get(ResolvedType.java:300) AspectJ 1.6.8 does use a different way of walking the type hierarchy. It may well be it walks a different route than 1.6.6 and 1.6.6 exited early before it discovered a type it couldn't find, whereas 1.6.8 hits this type first. If you don't think the type is around, maybe I should move errors about missing types to be reported only at the end of a match request if we can't definitively know a match is false by checking other interfaces.
I really do not know what the type is, as my jndi lookup / java code is simply asking for a javax.jms.TopicConnectionFactory, and doesn't care about the implementation class. I would assume that Websphere's internal implementation classes would be available, and it seems odd that it is unavailable If it is possible to satisfy a match request without needing every type available, it seems sensible to only exit after all type paths are exhausted the match request is still un-defined
Can I log out each step that is taken in the heirarchy, to see the differences between 1.6.6 and 1.6.8?
Unfortunately no, you cannot log the visited list of interfaces in 1.6.6 or 1.6.8. The message is just a warning, so you could just turn off the Xlint if you believe everything is working just fine. In the longer term I think the solution I posted in an earlier comment is the way to go: > move errors about missing > types to be reported only at the end of a match request if we can't > definitively know a match is false by checking other interfaces.
unsetting the target field which is currently set for something already released