Tomcat Axis2 - 没有看到弹簧罐

时间:2011-04-20 23:27:48

标签: spring tomcat configuration axis2

我现在已经在网上阅读了几个小时的信息,而且我很茫然。

我已经成功地在一个servlet中使用Axis2运行Tomcat 7。我可以很好地查看基于非弹簧的jsps。在我尝试整合弹簧的那一刻,整个事情都破裂了。我的服务器日志给出了以下错误。

   SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1591)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4638)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5204)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5199)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    ... 25 more

我有Spring 3.1.0.M1,并且jar在Axis2的类路径中(%AXIS2CLASSPATH%),而对于Tomcat,则通过工具栏的工具界面进行配置。这一切都在Windows 7 x64上完成。

我正在尝试使用Axis2工作的pojoguidespring样本。

这是一个干净的安装,所以如果需要,我可以把它拆掉。有人可以给我一些详细的指示吗?我在这里疯了。

提前致谢。


编辑:

虽然javax/servlet/ServletContextListener不是Spring类,但只有当我在web.xml中包含Springs上下文配置信息时才会调用它,就像这样

<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>

servlet-api.jar位于Axis2和Tomcat的类路径(lib目录)中。检查jar表明javax/servlet/ServletContextListener绝对可用。我可以得到另一个建议吗?

1 个答案:

答案 0 :(得分:2)

javax/servlet/ServletContextListener不是Spring类;它是应该与Tomcat一起提供的servlet.jar的一部分。

%AXIS2CLASSPATH%向我建议您依赖于CLASSPATH的环境变量。这是一个坏主意。如果你把你需要的JAR放在适当的位置,Tomcat应该能够管理好一切。无需环境变量或更改任何启动脚本。

你的CLASSPATH坏了;我解决了这个问题。