I'm running into trouble migrating my existing web application from WebWork 2.2.2 to Struts 2.0.9. We are using JSE6 (AKA JDK 1.6) and Tomcat 5.5.17. I did everything mentioned on the wiki plus a bunch more stuff:
http://struts.apache.org/2.x/docs/webwork-2-migration-strategies.html If I ever get this working I promise to provide feedback to update this page based on my experiences migrating to Struts 2.0.9. To set things up, I was fairly quickly able to get to the point that I had a clean build of my webapp after swapping out WebWork and swapping in Struts 2.0.9. Hard as it may be to believe, we were not using Spring IoC. I had that turned off in my webwork.properties like so: ### Configuration for IoC Container ### webwork.objectFactory=spring However, it appears that S2 really wants some IoC container because I kept getting complaints with this commented out. So, I uncommented it in my renamed struts. properties file (added necessary listener in web.xml too) and included the latest Spring Framework jar file (2.0.6). This in turn gave me complaints about missing ActiveMQ classes and including the main jar file for latest ActiveMQ (4.1.1) didn't seem to help. That catches everyone up to my current situation. Here is the full console log output for my latest failed webapp startup: <CONSOLE-OUTPUT> cmd /c C:\java\apache-tomcat-5.5.17\bin\catalina.bat run Using CATALINA_BASE: C:\Documents and Settings\van\.IntelliJIdea60\system\tomcat_Unnamed_7c1b22c1 Using CATALINA_HOME: C:\java\apache-tomcat-5.5.17 Using CATALINA_TMPDIR: C:\svn\head\dev\projects\krillion\dist\catalina_bases\browser\dev\temp Using JRE_HOME: C:\java\jdk1.6.0 Connected to the target VM, address: '127.0.0.1:1866', transport: 'socket' Aug 3, 2007 4:11:03 PM org.apache.coyote.http11.Http11AprProtocol init INFO: Initializing Coyote HTTP/1.1 on http-8000 Aug 3, 2007 4:11:03 PM org.apache.coyote.ajp.AjpAprProtocol init INFO: Initializing Coyote AJP/1.3 on ajp-8002 Aug 3, 2007 4:11:03 PM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 640 ms Aug 3, 2007 4:11:03 PM org.apache.catalina.core.StandardService start INFO: Starting service Catalina Aug 3, 2007 4:11:03 PM org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/5.5.17 Aug 3, 2007 4:11:03 PM org.apache.catalina.core.StandardHost start INFO: XML validation disabled 16:11:07,218 INFO [/]: Initializing Spring root WebApplicationContext 16:11:07,218 INFO ContextLoader: Root WebApplicationContext: initialization started 16:11:07,296 INFO XmlWebApplicationContext: Refreshing [EMAIL PROTECTED]: display name [Root WebApplicationContext]; startup date [Fri Aug 03 16:11:07 PDT 2007]; root of context hierarchy 16:11:07,500 INFO XmlBeanDefinitionReader: Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml] 16:11:07,718 INFO XmlWebApplicationContext: Bean factory for application context [EMAIL PROTECTED]: [EMAIL PROTECTED] 16:11:07,812 INFO DefaultListableBeanFactory: Pre-instantiating singletons in [EMAIL PROTECTED]: defining beans [connectionFactory,messageworkDestination,jmsTemplate,mapMessageFactory,textMessageFactory,actionMessageSender]; root of factory hierarchy 16:11:07,812 INFO DefaultListableBeanFactory: Destroying singletons in [EMAIL PROTECTED]: defining beans [connectionFactory,messageworkDestination,jmsTemplate,mapMessageFactory,textMessageFactory,actionMessageSender]; root of factory hierarchy 16:11:07,828 ERROR ContextLoader: Context initialization failed org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.codehaus.activemq.ActiveMQConnectionFactory] for bean with name 'connectionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: org.codehaus.activemq.ActiveMQConnectionFactory Caused by: java.lang.ClassNotFoundException: org.codehaus.activemq.ActiveMQConnectionFactory at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1352) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198) at org.springframework.util.ClassUtils.forName(ClassUtils.java:201) at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:327) at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1075) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:282) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:244) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:187) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3729) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4187) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:608) at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:535) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021) at org.apache.catalina.core.StandardHost.start(StandardHost.java:718) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442) at org.apache.catalina.core.StandardService.start(StandardService.java:450) at org.apache.catalina.core.StandardServer.start(StandardServer.java:709) at org.apache.catalina.startup.Catalina.start(Catalina.java:551) 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:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432) 16:11:07,843 ERROR [/]: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.codehaus.activemq.ActiveMQConnectionFactory] for bean with name 'connectionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: org.codehaus.activemq.ActiveMQConnectionFactory Caused by: java.lang.ClassNotFoundException: org.codehaus.activemq.ActiveMQConnectionFactory at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1352) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198) at org.springframework.util.ClassUtils.forName(ClassUtils.java:201) at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:327) at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1075) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:282) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:244) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:187) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3729) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4187) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:608) at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:535) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021) at org.apache.catalina.core.StandardHost.start(StandardHost.java:718) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442) at org.apache.catalina.core.StandardService.start(StandardService.java:450) at org.apache.catalina.core.StandardServer.start(StandardServer.java:709) at org.apache.catalina.startup.Catalina.start(Catalina.java:551) 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:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432) Aug 3, 2007 4:11:07 PM org.apache.catalina.core.StandardContext start SEVERE: Error listenerStart Aug 3, 2007 4:11:07 PM org.apache.catalina.core.StandardContext start SEVERE: Context [] startup failed due to previous errors 16:11:07,859 INFO [/]: Closing Spring root WebApplicationContext Aug 3, 2007 4:11:08 PM org.apache.coyote.http11.Http11AprProtocol start INFO: Starting Coyote HTTP/1.1 on http-8000 Aug 3, 2007 4:11:08 PM org.apache.coyote.ajp.AjpAprProtocol start INFO: Starting Coyote AJP/1.3 on ajp-8002 Aug 3, 2007 4:11:08 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 4969 ms </CONSOLE-OUTPUT> The peculiar thing about this failure is that it is complaining about not being able to load this class: org.codehaus.activemq.ActiveMQConnectionFactory When I crack open the latest ActiveMQ jar from Apache site, there is an ActiveMQConnectionFactory class. However, it is packaged like so: org.apache.activemq.ActiveMQConnectionFactory I am beginning to spin my wheels on this. Any pointers or suggestions would be much appreciated. If I can't figure this out, I may have to admit defeat and switch to Rails development. ;-) -Van Mike Van Riper [EMAIL PROTECTED] Silicon Valley Web Developer JUG https://sv-web-jug.dev.java.net --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]