2017-07-27 2 views
1

Je suis en train de déployer une application WebSphere Liberty via Docker. J'utilise également Apache Struts pour l'interface utilisateur. Lors du déploiement sur ma machine locale, je n'ai aucun problème, mais une fois posé sur toute autre machine, il y a une erreur indiquant que le filtre struts2 ne peut pas être chargé. Les cours ne semblent pas manquer.Docker conteneur exécutant un ordinateur et pas un autre

Pourquoi ce conteneur fonctionnerait-il sur une machine et pas une autre?

Stack Trace:

[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

double possible de [GRAVES: Filtre départ Exception struts2 java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.FilterDispatcher] (https://stackoverflow.com/questions/5256939/severe-exception-starting-filter -struts2-java-lang-classnotfoundexception-org) –

Répondre

1

Causée par: javax.xml.parsers.ParserConfigurationException: analyseur AElfred est non-validateur

Le struts2 nécessite d'avoir un analyseur de validation. Puisque cet analyseur est non-validant, il devrait être retiré du classpath.

L'analyseur analysé peut être trouvé dans saxon.jar.

+0

Cela a fait l'affaire! Mise à jour du fichier JAR avec une version plus récente et mon problème a été résolu. Merci beaucoup! – rickrizzo

+0

Mise à jour: Cela a fonctionné, mais j'ai aussi découvert que lorsque j'ai mis à jour le fichier JAR vers une version plus récente, j'ai également dû ajouter d'autres fichiers. Plus précisément, saxon-dom-8.jar et jaxp-api-1.4.2.jar. Avant d'ajouter ceux-ci j'ai eu des erreurs concernant une exception d'argument illégal. YMMV sur les versions, mais vous avez besoin de ces pots pour gérer les composants dom – rickrizzo

+0

Mise à jour: Mes pensées initiales étaient erronées. La mise à jour de l'analyseur a fonctionné brièvement, mais a cassé plus tard. J'ai répondu à la question avec mes conclusions. – rickrizzo

0

Grâce à Roman, j'ai pu diagnostiquer ce problème plus correctement en tant que problème de parseur XML saxon. J'ai essayé juste de remplacer mon JAR et cela a effectivement fonctionné pour quelques tests, mais plus tard a éclaté.

Ce post sur le forum finalement résolu le problème: http://grokbase.com/t/tomcat/users/031xc9jye7/i-cant-use-saxon-xml-parser-in-my-web-app-please-help

Mon serveur Web (WebSphere Liberté) a essayé d'utiliser Saxon comme l'analyseur XML, mais Saxon est non-validation et donc cela a été défaillante, en particulier dans Docker où J'essayais ça.

Pour résoudre ce problème, j'ai dû supprimer le fichier javax.xml.parsers.SAXParserFactory du JAR, puis le serveur a fonctionné correctement.