2017-07-27 39 views
1

我试图通过部署多克尔一个WebSphere应用程序的自由。我也在为用户界面使用Apache Struts。在我的本地机器上部署时,我没有问题,但是当放到其他机器上时,它会报错,说明无法加载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 
+0

的可能的复制[重度:异常起始滤波器struts2的抛出java.lang.ClassNotFoundException:org.apache.struts2.dispatcher.FilterDispatcher](https://stackoverflow.com/questions/5256939/severe-exception-starting-filter -struts2-java-lang-classnotfoundexception-org) –

回答

1

所致:javax.xml.parsers.ParserConfigurationException:AElfred解析器非验证

Struts2的需要有一个验证解析器。由于这个解析器是非验证的,它应该从类路径中移除。

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

+0

这样做的窍门!用更新的版本更新了JAR,并解决了我的问题。非常感谢! – rickrizzo

+0

更新:这个没有工作,但我也发现,我更新了JAR到新版本我也只好添加一些其他的罐子。具体来说,saxon-dom-8.jar和jaxp-api-1.4.2.jar。在添加这些之前,我收到了关于非法参数异常的错误。上的版本情况因人而异,但你需要那些罐子来处理DOM组件 – rickrizzo

+0

更新:我最初的想法是错误的。更新解析器的工作很简单,但后来破裂了。我用我的发现回答了这个问题。 – rickrizzo

0

感谢罗马,我能够更准确地诊断这个问题是一个撒克逊XML解析器问题。我尝试更换我的JAR,这实际上只是为了一些测试,但后来打破了。

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

我的Web服务器(的WebSphere自由)尝试使用撒克逊作为XML解析器,但是撒克逊是非验证,因此这是失败的,特别是在多克,其中我正在尝试这个。

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

相关问题