I'm in the process of refactoring an app to take advantage of the JBoss Spring Deployer and I'm running into some minor issues. I have a project layout very similar to the example project.. here is the basic gist of what is in the EAR file which gets deployed:
Services.spring -- these are the pojo services configured for the Spring deployer.
Services.jar -- EJB's which get injected with the above POJO's
Website.war -- Wicket app which has a service factory which in theory gets injected with the EJB's via JNDI.
The Spring configured POJO's load fine, and as far as I can tell the EJB's get injected correctly, but various exceptions happen with the Website.war.
At first it was missing some sort of class from the spring-web.jar, so I added it to the deployer. Now that the spring-web.jar is in the deployer, I'm getting an exception like this:
04:50:44,413 ERROR [ContextLoader] Context initialization failed java.lang.NoSuchMethodError: org.springframework.beans.factory.config.ConfigurableListableBeanFactory.registerScope(Ljava/lang/String;Lorg/springframework/beans/factory/config/Scope;)V at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.postProcessBeanFactory(AbstractRefreshableWebApplicationContext.java:161) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:294) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:189) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3854) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4359) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:761) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:741) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:553) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:589) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297) at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) at org.apache.catalina.core.StandardContext.init(StandardContext.java:5310)
I also tried upgrading all of the jar's in the deployer to Spring 2.08 and ran into various problems because some of the methods the deployer relies on have been removed, etc.
The downloads section of the Spring Deployer is not at all clear to me, so I may have downloaded/implemented it wrong. I basically did this to create a Spring deployer that seems to work for the most part:
Downloaded the "Spring Deployer 1.3" and applied the JDK JAR from "Spring Deployer 2".
Anyhow, I guess I have a few questions around all of this:
1. Did I implement the deployer correctly? If not, what should I do?
2. What version of Spring is supported/shipped with the deployer?
3. Will Spring 2.0.8 or 2.5.1 support get rolled into the deployer anytime soon for JBoss 4.x? I think I ran into some bugs which put me on 2.0.8 (2.5.1 would be much preferred however)