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
org.springframework.web.context.support.XmlWebApplicationContext@(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
[
org.springframework.web.context.support.XmlWebApplicationContext@(protected)]:
org.springframework.beans.factory.support.DefaultListableBeanFactory@(protected)
16:11:07,812 INFO DefaultListableBeanFactory: Pre-instantiating
singletons in
org.springframework.beans.factory.support.DefaultListableBeanFactory@(protected):
defining beans [connectionFactory,messageworkDestination,jmsTemplate,mapMessageFactory,textMessageFactory,actionMessageSender];
root of factory hierarchy
16:11:07,812 INFO DefaultListableBeanFactory: Destroying singletons
in
org.springframework.beans.factory.support.DefaultListableBeanFactory@(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.ContextLoaderListenerorg.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.ActiveMQConnectionFactoryI 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
van_riper@(protected)
Silicon Valley Web Developer JUG
https://sv-web-jug.dev.java.net
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@(protected)
For additional commands, e-mail: user-help@(protected)