2012-08-06 63 views
1

我是新来的Tomcat,并一直负责在Eclipse在Tomcat中6/Java的6警告和错误在Tomcat的6启动

迁移的Tomcat 5/1.4的Java应用程序在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

然后,勿庸置疑,在Web应用程序负载()异常

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文件中,全局命名资源看起来是正确定义的,所以我应该查找缺少的资源参数块,或文件中的某种语法错误,或缺少.jar或... ?

任何建议欢迎!

+0

请分享异常堆栈跟踪。发现上述块只是警告。 – sundar 2012-08-06 13:39:50

+0

发布编辑以包含完整的异常堆栈跟踪。据我所知,Catalina无法加载出现在eclipse中服务器源查找路径中的一些jar(log4j&co)。 – 2012-08-06 13:52:43

+0

确保您在webapp类路径中具有log4j.properties并正确配置。 – sundar 2012-08-06 13:58:48

回答

2

这里的基本问题是,你不能简单地把一个Tomcat 5.5 server.xml文件,放到Tomcat 6,并期望它没有任何改变的工作。您需要阅读Migration Guide等。最好的策略是从Tomcat附带的server.xml开始,并根据您配置的以前版本进行配置所需的任何修改。这通常意味着<Connector><Resource>的定义。请注意,您不应该在server.xml中定义<Context>元素,不再需要

还有一点需要注意:如果您要升级到不同的主要版本的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的JSSE具有更高的SSL性能,如果您需要这样的事情,则APR支持FIPS模式。即使您未使用SSL,APR连接器也会比BIO连接器的性能好得多。

Could not get url for /javax/servlet/jsp/resources/jsp_2_1.xsd ...

我不确定我可以帮你做那个。如果没有完整的堆栈跟踪或其他信息(如文件中提到的URL),我们无法提供帮助。

+0

非常感谢这个快速而准确的答案。我将更新我的server.xml并添加缺少的库,并查看它是否会变得更好(顺便说一下,我们不想更改为Tomcat 7,因为此服务器尚未通过我们的认证,足够稳定建筑团队......)。 – 2012-08-06 15:23:50

+0

@LegrandRobert请注意,Tomcat 5.5.x将在今年晚些时候被官方支持,而Tomcat 8将在Servlet 3.1完成后不久发布。在那一点上,Tomcat 6将在斩将式(尽管不是几年我肯定)。我会给你的架构团队施加一些压力来测试Tomcat 7.如果你实际上遇到了问题,请通过[Tomcat用户的邮件列表](http://tomcat.apache.org/lists.html# Tomcat的用户)。 – 2012-08-06 21:34:26

+0

关于Context XML文件的Tomcat文档(这里是Tomcat 7)可能对解决这类问题很有用:https://tomcat.apache.org/tomcat-7.0-doc/config/context.html – spiritoo 2015-08-06 15:25:07