繁体   English   中英

运行一台计算机而不是另一台计算机的 Docker 容器

[英]Docker container running one computer and not another

我正在尝试通过 Docker 部署 WebSphere Liberty 应用程序。 我也在使用 Apache Struts 作为 UI。 在我的本地机器上部署时,我没有问题,但是当放在看似任何其他机器上时,它会抛出一个错误,指出无法加载 struts2 过滤器。 类似乎没有丢失。

为什么这个容器可以在一台机器上工作而不是另一台机器?

堆栈跟踪:

[ERROR   ] SRVE0321E: The [struts2] filter did not load during start up.

Filter [struts2]: could not be initialized

[ERROR   ] SRVE0315E: An exception occurred: java.lang.Throwable: javax.servlet.ServletException: Filter [struts2]: could not be initialized

at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:5027)

at [internal classes]

Caused by: javax.servlet.ServletException: Filter [struts2]: could not be initialized

at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.init(FilterInstanceWrapper.java:163)

... 1 more

Caused by: Unable to create SAX parser - Class: com.icl.saxon.aelfred.SAXParserFactoryImpl

File: SAXParserFactoryImpl.java

Method: newSAXParser

Line: 34 - com/icl/saxon/aelfred/SAXParserFactoryImpl.java:34:-1

at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:835)

at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:131)

at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:100)

at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:130)

at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)

at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)

at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)

at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)

at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.init(FilterInstanceWrapper.java:149)

... 1 more

Caused by: Unable to create SAX parser - Class: com.icl.saxon.aelfred.SAXParserFactoryImpl

File: SAXParserFactoryImpl.java

Method: newSAXParser

Line: 34 - com/icl/saxon/aelfred/SAXParserFactoryImpl.java:34:-1

at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:111)

at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:830)

... 9 more

Caused by: javax.xml.parsers.ParserConfigurationException: AElfred parser is non-validating

at com.icl.saxon.aelfred.SAXParserFactoryImpl.newSAXParser(SAXParserFactoryImpl.java:34)

at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:109)

... 10 more

引起:javax.xml.parsers.ParserConfigurationException: AElfred parser is non-validating

struts2 需要有一个验证解析器。 因为这个解析器是非验证的,所以应该从类路径中删除它。

受影响的解析器可以在saxon.jar找到。

多亏了 Roman,我才能够更准确地将此问题诊断为撒克逊 XML 解析器问题。 我尝试只替换我的 JAR,这实际上适用于一些测试,但后来坏了。

这个论坛帖子最终解决了这个问题: http : //grokbase.com/t/tomcat/users/031xc9jye7/i-cant-use-saxon-xml-parser-in-my-web-app-please-help

我的 Web 服务器 (WebSphere Liberty) 试图使用 Saxon 作为 XML 解析器,但是 Saxon 是非验证的,因此失败了,尤其是在我尝试此操作的 Docker 中。

为了解决这个问题,我必须从 JAR 中删除文件javax.xml.parsers.SAXParserFactory ,然后服务器才能正常运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM