Tomcat7 中的 Java 1.5 战争产生 InvokerServlet 异常? [英] Java 1.5 war in Tomcat7 producing InvokerServlet exception?
问题描述
嗨..我已经在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屋!