I've been banging my head against this issue for a couple days now.
I'm working on a web application that uses Spring and we just upgraded from Spring 2.5.5 to 3.1.0. We're encountering some kind of error related to AOP on Websphere only, not on Weblogic and not on Tomcat.
The exception happens during Spring ApplicationContext initialization and results in an exception like this:
Code:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'Hipaa5010Processor' defined in class path resource [lassen_objects_config.xml]: Cannot resolve reference to bean 'SecurityService' while setting bean property 'securityService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'SecurityService' defined in class path resource [lassen_objects_config.xml]: ... Cannot resolve reference to bean 'careRadiusReportRequestQueue' while setting bean property 'reportRequestQueue'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'careRadiusReportRequestQueue': Post-processing of the FactoryBean's object failed; nested exception is java.lang.IllegalArgumentException: warning no match for this type name: com.landacorp.lib.business.StatelessObject [Xlint:invalidAbsoluteTypeName] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328) ... Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'careRadiusReportRequestQueue': Post-processing of the FactoryBean's object failed; nested exception is java.lang.IllegalArgumentException: warning no match for this type name: com.landacorp.lib.business.StatelessObject [Xlint:invalidAbsoluteTypeName] at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:165) at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:102) at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1441) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:305) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322) ... 190 more Caused by: java.lang.IllegalArgumentException: warning no match for this type name: com.landacorp.lib.business.StatelessObject [Xlint:invalidAbsoluteTypeName] at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:301) at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:207) at org.springframework.aop.aspectj.AspectJExpressionPointcut.getFallbackPointcutExpression(AspectJExpressionPointcut.java:358) at org.springframework.aop.aspectj.AspectJExpressionPointcut.getShadowMatch(AspectJExpressionPointcut.java:409) ...
The careRadiusReportRequestQueue is a jndi-lookup bean for a jms queue:
I don't think the error is even related to this bean, it seems to be coming from an aop pointcut, and we only have place in our spring config files where that's used:Code:<jee:jndi-lookup id="careRadiusReportRequestQueue" jndi-name="java:comp/env/com/landacorp/jms/dest/CareRadiusReportRequestQueue" />
This configuration seems valid, to me, and this is further support by the lack of a problem on Weblogic and Tomcat platforms. I've searched various forums for any similar problems and have tried the following things:Code:<aop:config> <aop:aspect id="jcsPreAspect" ref="jcsPreAdvice" > <aop:pointcut id="jcsPreAdvisor" expression="target(com.landacorp.lib.business.StatelessObject)|| target(com.landacorp.lib.business.TransactionalObject) || target(com.landacorp.lassen.userdefinedwindow.RunUserDefinedWindow) || target(com.landacorp.lassen.clinicaldata.ClinicalMetricsManagementObject)" /> <aop:around pointcut-ref="jcsPreAdvisor" method="invoke" /> </aop:aspect> <aop:aspect id="jcsPostAspect" ref="jcsPostAdvice" > <aop:pointcut id="jcsPostAdvisor" expression="target(com.landacorp.lib.business.StatelessObject) || target(com.landacorp.lib.business.TransactionalObject) || target(com.landacorp.lib.business.TransactionService) || target(com.landacorp.lassen.userdefinedwindow.RunUserDefinedWindow) || target(com.landacorp.lassen.clinicaldata.ClinicalMetricsManagementObject)" /> <aop:around pointcut-ref="jcsPostAdvisor" method="invoke" /> </aop:aspect> </aop:config>
1. made sure that all jars (including those containing com.landacorp.com.lib.business.StatelessObject and all spring and aspectj code) are at the WAR/WEB-INF/lib level, since there's apparently some problem with packaging those at the ear level - no change.
2. defined a shared library in Websphere for aspectjrt.jar, with and without isolated classloader checked, and referenced that in my application deployment - no change
Anyone have any ideas?


Reply With Quote