我是 Tomcat 的新手,我的任务是将 Tomcat 5/Java 1.4 应用程序迁移到 Tomcat 6/Java 6。
在 Eclipse 中启动 tomcat 6 时,我不断收到多个警告,例如:
No rules found matching 'Server/GlobalNamingResources/ResourceParams/parameter/value'. 6 août 2012 14:49:32 org.apache.tomcat.util.digester.Digester endElement (50 times or so...)
然后
[SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:MyProject' did not find a matching property. 6 août 2012 14:49:32 org.apache.tomcat.util.digester.SetPropertiesRule begin
然后
The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\METIER\MES\java\jdk1.6.0_11\bin; [+ multiple different paths] 6 août 2012 14:49:32 org.apache.coyote.http11.Http11Protocol init
然后
Could not get url for /javax/servlet/jsp/resources/jsp_2_1.xsd 6 août 2012 14:49:32 org.apache.catalina.startup.DigesterFactory register
然后,毫不奇怪,webApp load() 出现异常
GRAVE: La servlet /SdcReaderService a généré une exception "load()" org.apache.commons.logging.LogConfigurationException: Class org.apache.commons.logging.impl.Log4JLogger does not implement Log at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:412) at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:525) at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:272) at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:246) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:395) at org.apache.jasper.servlet.JspServlet.(JspServlet.java:58) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1104) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4364) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 6 août 2012 14:49:32 org.apache.tomcat.util.modeler.Registry registerComponent GRAVE: Null component Catalina:type=JspMonitor,name=jsp,WebModule=//localhost/SdcReaderService,J2EEApplication=none,J2EEServer=none 6 août 2012 14:49:32 org.apache.catalina.core.ApplicationContext log INFO: La servlet jsp est marqué comme indisponible 6 août 2012 14:49:32 org.apache.catalina.core.StandardContext loadOnStartup GRAVE: La servlet a généré une exception "load()" java.lang.NoClassDefFoundError: Could not initialize class org.apache.jasper.servlet.JspServlet at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1104) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4364) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 6 août 2012 14:49:32 org.apache.tomcat.util.modeler.Registry registerComponent GRAVE: Null component Catalina:type=JspMonitor,name=jsp,WebModule=//localhost/,J2EEApplication=none,J2EEServer=none 6 août 2012 14:49:32 org.apache.catalina.core.ApplicationContext log INFO: La servlet jsp est marqué comme indisponible 6 août 2012 14:49:32 org.apache.catalina.core.StandardContext loadOnStartup GRAVE: La servlet /PlmIterableObjectServiceReader a généré une exception "load()" java.lang.NoClassDefFoundError: Could not initialize class org.apache.jasper.servlet.JspServlet at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1104) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4364) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 6 août 2012 14:49:32 org.apache.tomcat.util.modeler.Registry registerComponent GRAVE: Null component Catalina:type=JspMonitor,name=jsp,WebModule=//localhost/PlmIterableObjectServiceReader,J2EEApplication=none,J2EEServer=none 6 août 2012 14:49:33 org.apache.catalina.core.StandardContext addApplicationListener INFO: The listener "com.rolex.j2ee.MyProject.util.MyProjectServletCtxListener" is already configured for this context. The duplicate definition has been ignored. 6 août 2012 14:49:33 org.apache.catalina.core.StandardContext addApplicationListener INFO: The listener "com.rolex.j2ee.MyProject.util.SessionListener" is already configured for this context. The duplicate definition has been ignored. 6 août 2012 14:49:33 org.apache.catalina.core.ApplicationContext log INFO: La servlet jsp est marqué comme indisponible 6 août 2012 14:49:33 org.apache.catalina.core.StandardContext loadOnStartup GRAVE: La servlet /MyProject a généré une exception "load()" java.lang.NoClassDefFoundError: Could not initialize class org.apache.jasper.servlet.JspServlet at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1104) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4364) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 6 août 2012 14:49:33 org.apache.tomcat.util.modeler.Registry registerComponent GRAVE: Null component Catalina:type=JspMonitor,name=jsp,WebModule=//localhost/MyProject,J2EEApplication=none,J2EEServer=none
我猜问题出在Tomcat的配置文件上,但我不明白上面每个警告/错误的确切原因是什么。例如,在 server.xml 文件中,全局命名资源似乎已正确定义,所以我是否应该查找缺少的资源参数 block ,或者文件中的某种语法错误,或者缺少的 .jar,或者...... ?
欢迎任何建议!
最佳答案
这里的基本问题是您不能简单地使用 Tomcat 5.5 server.xml
文件,将其放入 Tomcat 6 中,并期望它无需任何更改即可工作。您需要阅读 Migration Guide除其他事项外。最好的策略是从 server.xml
开始随 Tomcat 一起提供,并按照您配置以前版本的方式进行配置所需的任何修改。这通常意味着 <Connector>
和 <Resource>
定义。请注意,您不应定义 <Context>
server.xml
中的元素不再。
请注意:如果您要升级到 Tomcat 的不同主要版本,为什么不一直升级到 Tomcat 7.0?
No rules found matching 'Server/GlobalNamingResources/ResourceParams/parameter/value
<Resource>
元素不再采用名为 <parameter>
的子元素等。相反,将所有参数转换为 <Resource>
的属性元素。
[SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' ...
<Context>
不支持“source”属性:Eclipse 正在添加它,它不应该存在。请注意,这只是一个警告:尽管有此消息,Tomcat(和您的 Web 应用程序)仍将正常启动。
The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found ...
你还没有编译Tomcat的原生库,但是你配置了AprLifecycleListener
,它会尝试加载此库。如果您想使用 APR,请转到 get it and compile it .如果您不想要或不需要它,请禁用 AprLifecycleListener
(或者忽略警告消息,这不会造成任何伤害)。如果您将 Tomcat 用于 SSL 终止,则使用 APR 是一个非常好的主意,因为 APR 的 SSL 性能比 Java 的 JSSE 高得多,而且如果您需要这种东西,APR 还支持 FIPS 模式。 APR 连接器的扩展性也比 BIO 连接器好得多,即使您没有使用 SSL。
Could not get url for /javax/servlet/jsp/resources/jsp_2_1.xsd ...
我不确定我能否在这方面为您提供帮助。如果没有完整的堆栈跟踪或其他信息(例如提到该 URL 的文件),我们将无能为力。
关于java - Tomcat 6 启动时的警告和错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11829348/