2017-02-14 121 views
0

我試圖通過更新apache-tomcat-8.0.39 \ conf \ catalina.properties在選項STRICT_SERVLET_COMPLIANCE = true的Tomcat 8.0.39上部署應用程序,但只要我做了我的應用程序部署失敗。 即我開始收到錯誤: SEVERE [localhost-startStop-1] org.apache.tomcat.util.digester.Digester.error解析應用程序web.xml文件中所有標記的錯誤。Tomcat應用程序無法使用STRICT_SERVLET_COMPLIANCE = true部署

一個堆棧跟蹤的是如下:

09-FEB-2017 15:06:32.189嚴重[本地主機 - startStop-1] org.apache.tomcat.util.digester.Digester.error第5行的解析錯誤第66列:文檔根元素「web-app」,必須匹配DOCTYPE根目錄「xml」。 org.xml.sax.SAXParseException; systemId:file:/ C:/Servers/Tomcat%208/apache-tomcat-8.0.39/webapps/file-service/WEB-INF/web.xml; lineNumber:5; columnNumber:66;文檔根元素「web-app」必須匹配DOCTYPE根目錄「xml」。 在com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(來源不明) 在com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(來源不明) 在COM。 sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) at com.sun.org。 apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.rootElementSpecified(Unknown Source) at com.sun.org.apache。 xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(Unknown So urce) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl $ NSContentDriver.scanRootElementHook(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDriver.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl $ PrologDriver.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source) at com。 sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(未知來源) at com.sun.or g.apache.xerces.internal.parsers.XML11Configuration.parse(未知來源) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(未知來源) at com.sun.org.apache。 xerces.internal.parsers.XMLParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal。 jaxp.SAXParserImpl $ JAXPSAXParser.parse(Unknown Source) at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1448) at org.apache.tomcat.util.descriptor.web.WebXmlParser.parseWebXml (WebXmlParser.java:119) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1119) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java: 783) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:307) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:95) at org.apache.catalina。 util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 在org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5213) 在org.apache.catalina.util.LifecycleBase.start(LifecycleBase。java:145) at org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1408) at org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1398) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source) at java.lang .Thread.run(來源不明)

爲了解決這個問題,我嘗試以下選項:

1)加入catalina.prop以下ERTIES:

org.apache.catalina.STRICT_SERVLET_COMPLIANCE=true 
org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR=false 

2)更新的代理WAR web.xml文件 更新的Web-app_3_0.xsd與網絡app_2_5.xsd 更新版本= 「3.0」,版本= 「2.5」

我還嘗試將apache-tomcat-8.0.39 \ conf \ web.xml中的「web-app」標記條目複製到我的應用程序web.xml中,但沒用。

3)嘗試設置下面的值,以各自的默認值[如設置

org.apache.catalina.STRICT_SERVLET_COMPLIANCE=true changes these defaults] 
org.apache.catalina.core.ApplicationContext.GET_RESOURCE_REQUIRE_SLASH 
org.apache.catalina.core.ApplicationDispatcher.WRAP_SAME_OBJECT 
org.apache.catalina.core.StandardHostValve.ACCESS_SESSION 
org.apache.catalina.session.StandardSession.ACTIVITY_CHECK 
org.apache.catalina.session.StandardSession.LAST_ACCESS_AT_START 
org.apache.tomcat.util.http.ServerCookie.STRICT_NAMING 

The **URIEncoding** attribute of any HTTP connector or AJP connector element. 
The **resourceOnlyServlets** attribute of any Context element. 
The **tldValidation** attribute of any Context element. 
The **useRelativeRedirects** attribute of any Context element. 
The **xmlNamespaceAware** attribute of any Context element. 
The **xmlValidation** attribute of any Context element. 

但似乎沒有任何工作正常。我也無法導航到tomcat管理器或部署的任何其他應用程序。

在另一方面每一件事工作正常,當我寫STRICT_SERVLET_COMPLIANCE =假在catalina.properties

有一些東西,我很想念這裏?請幫我解決這個問題。

問候, 布佩希

回答

1

我就遇到了這個問題爲好。我們所處的環境要求將STRICT_SERVLET_COMPLIANCE設置爲true,但web.xml的驗證不是需求背後的驅動力。爲了解決這個問題嘗試在conf/context.xml中的標籤xmlValidation設置爲false:

<Context xmlValidation="false"> ... </Context> 
+0

我不知道我怎麼錯過了回答我的這個問題,但是是的,我們修復了這個問題長期回用選項,你已經提到。感謝您的答覆。 –

相關問題