Tomcat7 中的 Java 1.5 战争产生 InvokerServlet 异常? [英] Java 1.5 war in Tomcat7 producing InvokerServlet exception?

查看:25
本文介绍了Tomcat7 中的 Java 1.5 战争产生 InvokerServlet 异常?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Hi..I have deployed my.war in Tomacat5.x, in that i was used java1.5 .At that time JAVA_HOME=java5path and CATALINA_HOME=tomcat5.x path in CentOS. It was working good.

现在我的问题是,

我正在使用 JAVA_HOME=java1.7 和 CATALINE_HOME=tomcat7.x 在 Tomcat7.x 中部署相同的战争,我收到以下错误

I'm deploying the same war in Tomcat7.x with JAVA_HOME=java1.7 and CATALINE_HOME=tomcat7.x i'm getting the following error

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..同样的错误.谁能建议我如何克服这个问题??

As well i have compiled code in java1.7 too and deployed in Tomcat7..same error.Can any one suggest me how to overcome this problem ??

谢谢.

推荐答案

由于Tomcat 7支持新的Servlet标准3.0版,我们必须注册里面使用的所有servlet类.为了安全起见,这是严格的.

As of Tomcat 7 supports new Servlet standard version 3.0, we have to register all the servlet classes used inside.This strict for security purpose.

Tomcat 6 及以下,web.xml

Tomcat 6 and below, 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 及以上

Tomcat 7 and above

<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 方法进行注册,如下面的示例片段.

In MyServletContextListener.java extends ServletContextListener and take all the classes and register using (override) contextInitialized method, like sample snippets below.

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

这篇关于Tomcat7 中的 Java 1.5 战争产生 InvokerServlet 异常?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆