【发布时间】:2023-03-04 07:44:08
【问题描述】:
我已经在网上阅读了几个小时的相关信息,但我很茫然。
我已经成功地让 Tomcat 7 在 servlet 中与 Axis2 一起运行。我可以很好地查看基于非弹簧的 jsps。在我尝试整合 spring 的那一刻,整个事情都崩溃了。我的服务器日志给了我以下错误。
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 绝对可用。我能再给点建议吗?
【问题讨论】:
-
当我将以下行添加到 web.xml 时出现问题。据我了解,这些行应该让 Axis2 为 spring 设置联系信息。
<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>
标签: spring tomcat configuration axis2