docker集装箱运行一台电脑,而不是另一台

我试图通过Docker部署一个WebSphere Liberty应用程序。 我也使用用于UI的Apache Struts。 在本地机器上部署时,我没有任何问题,但是当放在其他机器上时,会报错,说明无法加载struts2filter。 类似乎不会丢失。

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

堆栈跟踪:

[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:AElfredparsing器是不validation的

struts2需要有一个validationparsing器。 由于这个parsing器是非validation的,因此应该从类path中删除。

受影响的parsing器可以在saxon.jarfind。

感谢罗马,我能够更正确地诊断出这个问题,因为撒克逊XMLparsing器问题。 我尝试更换我的JAR,这实际上工作了一些testing,但后来打破。

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

我的Web服务器(WebSphere Liberty)试图使用Saxon作为XMLparsing器,但是Saxon无法validation,因此这是失败的,特别是在Docker中,我正在尝试这样做。

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