我正在将成熟的应用程序从Tomcat 5.5.x迁移到6.0.x.我需要确定哪些要点才能确定?
我使用了一些我怀疑需要调整的Tomcat服务......
编辑:我从一些Tomcat文档中看到,而不是使用$ TOMCAT_HOME / conf的server.xml和logging.properties,这些属于应用程序的context.xml和WEB-INF。也许6.0坚持这个?
注意:在serverfault.com上发布了交叉。
编辑-2 :以下是localhost.YYYY-MM-DD.log中记录的异常......
Nov 19, 2009 12:29:31 PM org.apache.catalina.core.ApplicationContext log
INFO: [gov.llnl.tox.toxServlet]@20091119122931.231 - initialized tox version: 1.5 build 0 with verbose logging
Nov 19, 2009 12:29:38 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.commons.httpclient.HttpMethodBase.<clinit>(HttpMethodBase.java:104)
at gov.llnl.tox.util.tag.doPost(tag.java:37)
at gov.llnl.tox.util.tag.doAfterBody(tag.java:66)
at org.apache.jsp.test_jsp._jspx_meth_tox_005ftoxTalk_005f0(test_jsp.java:241)
at org.apache.jsp.test_jsp._jspService(test_jsp.java:90)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:595)
Nov 19, 2009 12:35:58 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.commons.httpclient.HttpMethodBase.<clinit>(HttpMethodBase.java:104)
at gov.llnl.tox.util.tag.doPost(tag.java:37)
at gov.llnl.tox.util.tag.doAfterBody(tag.java:66)
at org.apache.jsp.test_jsp._jspx_meth_tox_005ftoxTalk_005f0(test_jsp.java:241)
at org.apache.jsp.test_jsp._jspService(test_jsp.java:90)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:595)
答案 0 :(得分:1)
Apache Tomcat网站有一个Migration Guide您可能想要检查。您可以在其中找到一些有用的信息,因为您知道您的应用程序使用的内容比SO读者更好:)
Matt Raible在this post报告了更多反馈:
conf/server.xml
和conf/Catalina/**
),commons-logging.jar
,因为它已经重命名,el-api.jar
。关于您所做的具体更改,我猜您将不得不再次应用它们。但我不确定他们是否需要调整。
但实际上,我想知道为什么要迁移成熟应用程序。您打算使用Servlet 2.5和JSP 2.1 API吗?你对其他improvements感兴趣吗?
答案 1 :(得分:1)
将Tomcat 5.5升级到6并不是什么大不了的事。基本上你只需要重新配置/conf
中的内容。
一个重要的细节是Tomcat 6在一个/lib
文件夹中包含所有默认库,而Tomcat 5.x将它们分散在/lib
,/shared
和/common
上它的子文件夹。验证是否没有删除可能需要复制到Tomcat 6的额外的非特定于应用程序服务器的JAR文件。通常这些文件只是容器管理的数据源和其他资源所需的JDBC驱动程序和其他JAR。此外,Tomcat 6的/conf/catalina.properties
还有新属性shared.loader
和common.loader
,您可以自己指定这些路径。用于外部化webapp属性文件,xslt文件,i18n文件等。
将Web应用程序迁移到另一台服务器是另一回事。类路径中会出现最大的问题。开发人员可能会以某种方式删除/WEB-INF/lib
中某些特定于应用程序服务器的JAR文件。每当webapp部署在不同品牌/版本的应用服务器上时,这将导致“无法解释的”ClassNotFoundException
或NoClassDefFoundError
问题。但如果webapp全部“干净”,那么我不会预见到真正的问题。
答案 2 :(得分:0)
当我们迁移到Tomcat 6.0时,我们的应用程序出现了一些问题,因为它随标准EE库一起提供,声明了javax.servlet和类似的东西 - 我现在不记得具体名称了。它在Tomcat 5.5中运行良好,但在Tomcat 6.0中不起作用。我们有一些理论为什么它不起作用:
这个项目是一个Maven构建。我们跟踪了依赖关系,排除了包含这些库的人,并将正确的库添加到我们使用的tomcat版本中,但是作为“提供”,这意味着在打包应用程序时不会发送它们。然后它奏效了。
除此之外,我不记得有任何问题。但是这个很难找到。在他们为Tomcat 5.5提供支持时,我不会迁移到Tomcat 6.0。