2017-02-14 78 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

我不知道我怎么错过了回答我的这个问题,但是是的,我们修复了这个问题长期回用选项,你已经提到。感谢您的答复。 –

相关问题