2010-01-20 6 views
0

Je tente de démarrer une application Struts 1.X (version 1.3.10) en utilisant OC4J version 10.1.3.5. L'application parvient à initialiser tous les beans Spring, y compris les Struts Actions définies dans le fichier action-servlet.xml. Cependant, une fois que tous les beans sont initialisés, je reçois une exception plutôt laide dans le journal.Struts 1.3.10 Digester.getParser() UnsupportedOperationException

J'ai suspecté un problème dans xalan (2.7.1), xercesImpl (2.9.1), ou xml-apis (1.3.04), mais tous ceux-ci utilisent les versions les plus récentes. L'exception indique qu'une dépendance peut être manquante, mais je suis incapable de déterminer ce que cela pourrait être.

Toute aide est appréciée. (Remarque: je ne peux pas mettre à jour Struts 2.X pour le moment.L'application est une ancienne qui sera probablement remplacée).

Digester.getParser:                    08:18:10,794 ERROR Digester(789) 
java.lang.UnsupportedOperationException: This parser does not support specification "null" version "null" 
    at javax.xml.parsers.SAXParserFactory.setXIncludeAware(SAXParserFactory.java:390) 
    at org.apache.commons.digester.Digester.getFactory(Digester.java:534) 
    at org.apache.commons.digester.Digester.getParser(Digester.java:786) 
    at org.apache.commons.digester.Digester.getXMLReader(Digester.java:1058) 
    at org.apache.commons.digester.Digester.parse(Digester.java:1887) 
    at org.apache.struts.action.ActionServlet.initServlet(ActionServlet.java:1785) 
    at org.apache.struts.action.ActionServlet.init(ActionServlet.java:349) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:256) 
    at com.evermind.server.http.HttpApplication.loadServlet(HttpApplication.java:2528) 
    at com.evermind.server.http.HttpApplication.findServlet(HttpApplication.java:5006) 
    at com.evermind.server.http.HttpApplication.findServlet(HttpApplication.java:4930) 
    at com.evermind.server.http.HttpApplication.initPreloadServlets(HttpApplication.java:5118) 
    at com.evermind.server.http.HttpApplication.initDynamic(HttpApplication.java:1283) 
    at com.evermind.server.http.HttpApplication.<init>(HttpApplication.java:848) 
    at com.evermind.server.ApplicationStateRunning.getHttpApplication(ApplicationStateRunning.java:435) 
    at com.evermind.server.Application.getHttpApplication(Application.java:592) 
    at com.evermind.server.http.HttpSite$HttpApplicationRunTimeReference.createHttpApplicationFromReference(HttpSite.java:2280) 
    at com.evermind.server.http.HttpSite$HttpApplicationRunTimeReference.<init>(HttpSite.java:2199) 
    at com.evermind.server.http.HttpSite.initApplications(HttpSite.java:701) 
    at com.evermind.server.http.HttpSite.setConfig(HttpSite.java:308) 
    at com.evermind.server.http.HttpServer.setSites(HttpServer.java:280) 
    at com.evermind.server.http.HttpServer.setConfig(HttpServer.java:180) 
    at com.evermind.server.ApplicationServer.initializeHttp(ApplicationServer.java:2541) 
    at com.evermind.server.ApplicationServer.setConfig(ApplicationServer.java:1058) 
    at com.evermind.server.ApplicationServerLauncher.run(ApplicationServerLauncher.java:131) 
    at java.lang.Thread.run(Thread.java:595) 
Unable to initialize Struts ActionServlet due to an unexpected exception or error thrown, so marking the servlet as unavailable. Most likely, this is due to an incorrect or missing library dependency. 08:18:10,802 ERROR ActionServlet(398) 
java.lang.NullPointerException 
    at org.apache.commons.digester.Digester.getXMLReader(Digester.java:1058) 
    at org.apache.commons.digester.Digester.parse(Digester.java:1887) 
    at org.apache.struts.action.ActionServlet.initServlet(ActionServlet.java:1785) 
    at org.apache.struts.action.ActionServlet.init(ActionServlet.java:349) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:256) 
    at com.evermind.server.http.HttpApplication.loadServlet(HttpApplication.java:2528) 
    at com.evermind.server.http.HttpApplication.findServlet(HttpApplication.java:5006) 
    at com.evermind.server.http.HttpApplication.findServlet(HttpApplication.java:4930) 
    at com.evermind.server.http.HttpApplication.initPreloadServlets(HttpApplication.java:5118) 
    at com.evermind.server.http.HttpApplication.initDynamic(HttpApplication.java:1283) 
    at com.evermind.server.http.HttpApplication.<init>(HttpApplication.java:848) 
    at com.evermind.server.ApplicationStateRunning.getHttpApplication(ApplicationStateRunning.java:435) 
    at com.evermind.server.Application.getHttpApplication(Application.java:592) 
    at com.evermind.server.http.HttpSite$HttpApplicationRunTimeReference.createHttpApplicationFromReference(HttpSite.java:2280) 
    at com.evermind.server.http.HttpSite$HttpApplicationRunTimeReference.<init>(HttpSite.java:2199) 
    at com.evermind.server.http.HttpSite.initApplications(HttpSite.java:701) 
    at com.evermind.server.http.HttpSite.setConfig(HttpSite.java:308) 
    at com.evermind.server.http.HttpServer.setSites(HttpServer.java:280) 
    at com.evermind.server.http.HttpServer.setConfig(HttpServer.java:180) 
    at com.evermind.server.ApplicationServer.initializeHttp(ApplicationServer.java:2541) 
    at com.evermind.server.ApplicationServer.setConfig(ApplicationServer.java:1058) 
    at com.evermind.server.ApplicationServerLauncher.run(ApplicationServerLauncher.java:131) 
    at java.lang.Thread.run(Thread.java:595) 
Digester.getParser:                    08:18:20,228 ERROR Digester(789) 
java.lang.UnsupportedOperationException: This parser does not support specification "null" version "null" 
    at javax.xml.parsers.SAXParserFactory.setXIncludeAware(SAXParserFactory.java:390) 
    at org.apache.commons.digester.Digester.getFactory(Digester.java:534) 
    at org.apache.commons.digester.Digester.getParser(Digester.java:786) 
    at org.apache.commons.digester.Digester.getXMLReader(Digester.java:1058) 
    at org.apache.commons.digester.Digester.parse(Digester.java:1887) 
    at org.apache.struts.action.ActionServlet.initServlet(ActionServlet.java:1785) 
    at org.apache.struts.action.ActionServlet.init(ActionServlet.java:349) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:256) 
    at com.evermind.server.http.HttpApplication.loadServlet(HttpApplication.java:2528) 
    at com.evermind.server.http.HttpApplication.findServlet(HttpApplication.java:5006) 
    at com.evermind.server.http.HttpApplication.findServlet(HttpApplication.java:4930) 
    at com.evermind.server.http.HttpApplication.getRequestDispatcher(HttpApplication.java:3139) 
    at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:775) 
    at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:458) 
    at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:226) 
    at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:127) 
    at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:116) 
    at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260) 
    at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler.java:234) 
    at oracle.oc4j.network.ServerSocketAcceptHandler.access$700(ServerSocketAcceptHandler.java:29) 
    at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHandler.java:879) 
    at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303) 
    at java.lang.Thread.run(Thread.java:595) 
Unable to initialize Struts ActionServlet due to an unexpected exception or error thrown, so marking the servlet as unavailable. Most likely, this is due to an incorrect or missing library dependency. 08:18:20,231 ERROR ActionServlet(398) 
java.lang.NullPointerException 
    at org.apache.commons.digester.Digester.getXMLReader(Digester.java:1058) 
    at org.apache.commons.digester.Digester.parse(Digester.java:1887) 
    at org.apache.struts.action.ActionServlet.initServlet(ActionServlet.java:1785) 
    at org.apache.struts.action.ActionServlet.init(ActionServlet.java:349) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:256) 
    at com.evermind.server.http.HttpApplication.loadServlet(HttpApplication.java:2528) 
    at com.evermind.server.http.HttpApplication.findServlet(HttpApplication.java:5006) 
    at com.evermind.server.http.HttpApplication.findServlet(HttpApplication.java:4930) 
    at com.evermind.server.http.HttpApplication.getRequestDispatcher(HttpApplication.java:3139) 
    at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:775) 
    at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:458) 
    at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:226) 
    at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:127) 
    at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:116) 
    at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260) 
    at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler.java:234) 
    at oracle.oc4j.network.ServerSocketAcceptHandler.access$700(ServerSocketAcceptHandler.java:29) 
    at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHandler.java:879) 
    at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303) 
    at java.lang.Thread.run(Thread.java:595) 

Répondre

0

Jamais l'esprit, je ne l'avais pas configuré global-web-application.xml de OC4J pour rechercher des classes locales première ou créé un fichier orion-web.xml personnalisé pour faire la même chose.

Si vous rencontrez ce problème, la meilleure approche (gros marteau) est d'ajouter cette ligne à (oc4j dir) \ j2ee \ home \ config \ global-web-application.xml:

<web-app-class-loader search-local-classes-first="true"/>

Le problème est que si vous essayez d'utiliser Xerces ou un autre analyseur SAX quelque peu mis à jour, vous rencontrerez un problème de chemin de classe avec celui qu'Oracle essaie de forcer dans votre gorge (comme avec n'importe lequel de leurs produits) .

3

J'ai fait face à ce problème lorsque j'ai essayé de valider le fichier XML en utilisant le schéma xml. J'ai googlé et trouvé la cause première de ce problème. Les fichiers Jar comme xerces-2.6.2.jar, crimson.jar, xalan.jar le long de avec jaxp.jar ont une ancienne version SAXParserFactory. Donc, tous les fichiers ci-dessus jar doivent être supprimés de la classe parh.

Supprimer ou mettre à jour le pot en fonction de ses pots avec la version correcte.

+0

Oui, c'est un de mes vieux, mais j'ai rencontré le même problème depuis le passage à Weblogic. Fondamentalement, la première chose à essayer est de définir xml-apis pour avoir fourni dans le fichier pom.xml. – Jason

4

Si cela peut aider tout le monde: j'ai eu des problèmes similaires et en fournissant l'SAXParserFactory comme une option JVM travaillé

-Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl