Details
-
Task
-
Resolution: Won't Do
-
Major
-
2.1.0.Final
-
None
-
Compatibility/Configuration
-
workaround is that: manually updating the ../deployers/jbossws.deployer/spring*.jar version to 2.5.6.SEC01
Description
Currently, JBossESB 4.8 deploys with spring jars for Spring 2.5.6.SEC01:
deploy/spring.esb/spring-aspects-2.5.6.SEC01.jar
deploy/spring.esb/spring-2.5.6.SEC01.jar
At the same time, when installing RiftSaw with CXF stack specified, some Spring jars are installed and they have version 2.5.5 visible in their manifests:
deployers/jbossws.deployer/spring-context.jar
deployers/jbossws.deployer/spring-tx.jar
deployers/jbossws.deployer/spring-core.jar
deployers/jbossws.deployer/spring-beans.jar
deployers/jbossws.deployer/spring-jms.jar
The version mismatch between ESB and CXF stack causes problems when making use of some features of Spring Framework in Riftsaw's CXF web service endpoint configuration descriptors.
E.g. if one tries to create a bean for accessing EJBs to be used by CXF interceptors:
<bean id="ejbProxyBean"
class="org.springframework.ejb.access.LocalStatelessSessionProxyFactoryBean">
<property name="jndiName" value="SomeSessionEJB"/>
<property name="businessInterface" value="SomeSessionEJBInterface"/>
</bean>
The result is an exception in the logs:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ejbProxyBean' ....
....
Caused by: java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.isEqualsMethod(Ljava/lang/reflect/Method;)Z
at org.springframework.aop.support.AopUtils.isEqualsMethod(AopUtils.java:118)
at org.springframework.aop.framework.JdkDynamicAopProxy.findDefinedEqualsAndHashCodeMethods(JdkDynamicAopProxy.java:131)
at org.springframework.aop.framework.JdkDynamicAopProxy.getProxy(JdkDynamicAopProxy.java:116)
at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:110)
at org.springframework.ejb.access.LocalStatelessSessionProxyFactoryBean.afterPropertiesSet(LocalStatelessSessionProxyFactoryBean.java:89)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1368)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1334)
That's because there was no isEqualsMethod() in Spring 2.5.5's version of ReflectionUtils.
I think that the CXF stack deployment mechanism should be updated to use Spring 2.5.6.SEC01.