Tomcat7 中的 Java 1.5 war 产生 InvokerServlet 异常?

标签 java tomcat7 tomcat5.5

嗨..我已经在Tomacat5.x中部署了my.war,因为我使用的是java1.5。当时CentOS中的JAVA_HOME=java5path和CATALINA_HOME=tomcat5.x路径。效果很好。

现在我的问题是,

我在 Tomcat7.x 中使用 JAVA_HOME=java1.7 和 CATALINE_HOME=tomcat7.x 部署相同的 war ,但出现以下错误

java.lang.ClassNotFoundException: org.apache.catalina.servlets.InvokerServlet
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)...

我也在java1.7中编译了代码并部署在Tomcat7中..同样的错误。有人可以建议我如何克服这个问题吗?

谢谢。

最佳答案

从Tomcat 7开始支持新的Servlet标准版本3.0,我们必须注册里面使用的所有Servlet类。出于安全目的,这是严格的。

Tomcat 6 及以下版本,web.xml

<servlet>
    <servlet-name>invoker</servlet-name>
    <servlet-class>
      org.apache.catalina.servlets.InvokerServlet
    </servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>invoker</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
</servlet-mapping>

Tomcat 7 及以上版本

<listener>
    <listener-class>
        com.test.MyServletContextListener
    </listener-class>
</listener>
<context-param>
    <param-name>com.package</param-name>
    <param-value>
        com.test.servlet,
        com.example.application,
     </param-value>
    <description>servlet implemented packages</description>
</context-param>

在 MyServletContextListener.java 中扩展 ServletContextListener 并获取所有类并使用(覆盖)contextInitialized 方法进行注册,如下面的示例片段所示。

for (Class clazz : classes) {
        String mapping = prefix + clazz.getName();
        ServletRegistration sr = sc.addServlet(clazz.getName(), clazz.getName());
        sr.addMapping(mapping);
    }

关于Tomcat7 中的 Java 1.5 war 产生 InvokerServlet 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18591632/

相关文章:

java - Apache Tomcat 中 JAVA_OPTS 中的空格

java - 如何在 Tomcat 5.5 中控制 webapp 中第三方组件的日志记录?

java - 配置 Tomcat 以发送兼容 IE 7 或 6 的网页

java - ArrayList、static 和 this 在 Java 中如何工作?

java - 在 Java 中编写具有双返回值和参数的算法方法的问题

带有@PreAuthorize 注解的java.lang.NoSuchMethodError

spring-mvc - 未找到 @RestController 和 @RequestMapping 的映射

java - 如何替换 RDD 的元素

Java Calendar.add 给出了错误的年份

apache - AJP 连接器不工作? (404 错误)