簡體   English   中英

Tomcat 應用程序無法部署 STRICT_SERVLET_COMPLIANCE=true

[英]Tomcat apps fail to deploy with STRICT_SERVLET_COMPLIANCE=true

我正在嘗試通過更新 apache-tomcat-8.0.39\conf\catalina.properties 在 Tomcat 8.0.39 上使用選項 STRICT_SERVLET_COMPLIANCE=true 部署應用程序,但一旦我這樣做,我的應用程序部署就會失敗。 ie I start getting errors: SEVERE [localhost-startStop-1] org.apache.tomcat.util.digester.Digester.error Parse Error for all the tags in applications web.xml file.

堆棧跟蹤之一如下:

2017 年 2 月 9 日 15:06:32.189 嚴重 [localhost-startStop-1] org.apache.tomcat.util.digester.Digester.error 第 5 行第 66 列解析錯誤:文檔根元素“mustwebapp” DOCTYPE 根“xml”。 org.xml.sax.SAXParseException; systemId:文件:/C:/Servers/Tomcat%208/apache-tomcat-8.0.39/webapps/file-service/WEB-INF/web.xml; 行號:5; 列號:66; 文檔根元素“web-app”,必須匹配 DOCTYPE 根“xml”。 at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(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.XMLErrorReporter.reportError(Unknown Source) at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.rootElementSpecified(Unknown Source) at com.sun.org.apache.xerces.intern al.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(Unknown Source) 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.XMLDocumen tScannerImpl.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(Unknown Source ) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 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.x erces.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) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5213) at 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 Z93F725A07423F E1C889F448B33D21F46Z.lang.Thread.run(未知來源)

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

1) 在 catalina.properties 中添加以下內容:

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

2) Updated agent WAR web.xml File Updated web-app_3_0.xsd with web-app_2_5.xsd Updated version="3.0" with version="2.5"

我還嘗試將“web-app”標簽條目從 apache-tomcat-8.0.39\conf\web.xml 復制到我的應用程序 web.Z0F635D0E0F3874FFF8B581C132E6 中但沒有使用。

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 管理器或部署的任何其他應用程序。

另一方面,當我在 catalina.properties 中編寫 STRICT_SERVLET_COMPLIANCE=false 時,一切正常

有什么我在這里想念的嗎? 請幫我解決這個問題。

問候, 布佩什

我也遇到了這個問題。 我們工作的環境要求將STRICT_SERVLET_COMPLIANCE設置為true,但是對web.xml的驗證並不是該要求背后的推動力。 要解決該問題,請嘗試在conf / context.xml的標記中將xmlValidation設置為false:

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

下面將解決這個問題

catalina.properties

org.apache.catalina.STRICT_SERVLET_COMPLIANCE=false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM