Java-噩梦:将Tomcat 5.5升级到6.0
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java-噩梦:将Tomcat 5.5升级到6.0,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4703字,纯文字阅读大概需要7分钟。
内容图文
我正在尝试将运行良好的嵌入式Tomcat 5.5升级到Tomcat 6.0.我了解我所要做的就是用6.0替换Tomcat 5.5 jar.
那就是我所做的.
因此,我更换了以下罐子:
catalina-5.0.28.jar catalina-5.5.9.jar catalina-optional-5.5.9.jar
commons-el.jar commons-modeler-1.1.0.jar jasper-compiler-jdt.jar
jasper-compiler.jar jasper-runtime.jar jmx-5.0.28.jar jsp-api-2.0.jar
naming-factory.jar naming-resources.jar servlet-api-2.4.jar
servlets-default.jar tomcat-coyote.jar tomcat-http.jar tomcat-util.jar
与:
annotations-api.jar catalina.jar jasper.jar tomcat-dbcp.jar
catalina-ant.jar el-api.jar jsp-api.jar tomcat-i18n-es.jar
catalina-ha.jar jasper-el.jar servlet-api.jar tomcat-i18n-fr.jar
catalina-tribes.jar jasper-jdt.jar tomcat-coyote.jar tomcat-i18n-ja.jar
tomcat-juli.jar
一旦启动服务器,就会在INFO级别的日志中收到以下消息:
INFO: Starting Servlet Engine: Apache Tomcat/6.0.29
Dec 31, 2010 6:04:18 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/usr/local/blah/blue/./WEB-INF/lib/servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
基于this的说明,我需要删除一个具有冲突Servlet.class的jar文件.我向上帝发誓,没有其他冲突的jar文件,我在Servlet.class中对整个系统进行了grep处理,它仅匹配servlet-api.jar.
我也下载了javaee.jar并用servlet-api.jar替换了它.
尝试了很多这些东西之后,我没有太多需要看的东西,因此将tomcat日志记录级别设置为ALL.在日志中,我可以看到它正在尝试在每个正在加载的jar中检查Servlet.class,直到找到servlet-api.jar并在找到servlet-api.jar时立即抛出“未加载jar”消息. .见下文:
FINE: Checking for javax/servlet/Servlet.class
Jan 2, 2011 7:39:33 AM org.apache.catalina.loader.WebappLoader setRepositories
FINE: Deploy JAR /WEB-INF/lib/servlet-api.jar to /usr/local/blah/blue/./WEB-INF/lib/servlet-api.jar
Jan 2, 2011 7:39:33 AM org.apache.catalina.loader.WebappClassLoader addJar
FINE: addJar(/WEB-INF/lib/servlet-api.jar)
Jan 2, 2011 7:39:33 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
FINE: Checking for javax/servlet/Servlet.class
Jan 2, 2011 7:39:33 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/usr/local/blah/blue/./WEB-INF/lib/servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Jan 2, 2011 7:39:33 AM org.apache.catalina.loader.WebappLoader setRepositories
更新
通过将servlet-api.jar放在一个单独的文件夹(例如$CATALINA_HOME / common / lib)中,我可以消除上述“未添加jar”错误.但是,当我命中URL时,GUI仍然显示空白(错误404):(.命中URL时的日志消息如下所述.
更新结束
但是请注意,Tomcat成功启动!
而且,当我在浏览器中点击URL时,我会得到空白页(仅在我的情况下,我想我的web.xml的cuz与大多数情况有所不同.Internet上的其他人却收到了错误404代替.)和以下日志语句(最高级)
Jan 2, 2011 9:40:01 AM org.apache.catalina.connector.CoyoteAdapter parseSessionCookiesId
FINE: Requested cookie session id is 0FBA716E3F9B0147C3AF7ABAE3B1C27B
Jan 2, 2011 9:40:01 AM org.apache.catalina.authenticator.AuthenticatorBase invoke
FINE: Security checking request GET /login.jsp
Jan 2, 2011 9:40:01 AM org.apache.catalina.realm.RealmBase findSecurityConstraints
FINE: Checking constraint 'SecurityConstraint[protected]' against GET /login.jsp --> false
Jan 2, 2011 9:40:01 AM org.apache.catalina.realm.RealmBase findSecurityConstraints
FINE: Checking constraint 'SecurityConstraint[protected]' against GET /login.jsp --> false
Jan 2, 2011 9:40:01 AM org.apache.catalina.realm.RealmBase findSecurityConstraints
FINE: Checking constraint 'SecurityConstraint[protected]' against GET /login.jsp --> false
Jan 2, 2011 9:40:01 AM org.apache.catalina.realm.RealmBase findSecurityConstraints
FINE: Checking constraint 'SecurityConstraint[protected]' against GET /login.jsp --> false
Jan 2, 2011 9:40:01 AM org.apache.catalina.realm.RealmBase findSecurityConstraints
FINE: No applicable constraint located
Jan 2, 2011 9:40:01 AM org.apache.catalina.authenticator.AuthenticatorBase invoke
FINE: Not subject to any constraint
Jan 2, 2011 9:40:01 AM org.apache.catalina.core.StandardWrapper allocate
FINEST: Returning non-STM instance
我不确定上面的日志消息是否重要,但是我在这里全面披露.
不过,一件有趣的事是,我在WEB-INF文件夹之外手动创建了一个仅包含“ helloooo”的虚拟jsp文件(此文件没有安全约束).该文件是可访问的并且可以显示.但是,我所有的jsp和类都在WEB-INF(ofcourse)内部.
对这个问题感到厌倦,请帮助我解决它.我已经花了20到24个小时,但未成功.
任何指针方向提示线索?
解决方法:
肯定需要servlet-api.jar来运行嵌入的tomcat.但是,这里似乎是一个类加载器问题.该Webapp的Classloader不能仅通过其父类加载器“直接”访问servlet.jar.
如果您只更换了jar,则在ClassLoaders 6.0与5.5中必须存在细微的差别,但是我不能说出在哪里.
内容总结
以上是互联网集市为您收集整理的Java-噩梦:将Tomcat 5.5升级到6.0全部内容,希望文章能够帮你解决Java-噩梦:将Tomcat 5.5升级到6.0所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。