2012-08-06 61 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