2011-02-10 16 views
8

Ambiente di distribuzione: Windows Server 2008, Tomcat 7.0.5, Oracle JRE 1.6. Ambiente di sviluppo uguale a Eclipse Helios.OpenSAML bootstrap() mi assegna "InputStream non può essere nullo"

Quando si tenta di distribuire la mia applicazione Java che utilizza OpenSAML 2.3.1 e testarlo dal vivo, non si desidera eseguire. Guardando attraverso il codice sorgente e lo stack trace, sembra che DefaultBootstrap.bootstrap() finisca per causare java.lang.IllegalArgumentException: InputStream cannot be null. Sto includendo la traccia completa dello stack qui sotto.

Le versioni del software sul sistema di distribuzione di destinazione sono, o almeno dovrebbero essere, esattamente le stesse della mia casella di sviluppo, dove tutto gira bene, ma ovviamente non lo faccio utilizzando il file .war . Ho la netta sensazione che mi manchi qualche file XML o DTD nell'archivio di distribuzione, ma quella sensazione da sola non mi aiuta molto a risolverlo. Anche googling per parti dello stacktrace non mi ha aiutato molto.

Dove posso iniziare a rintracciare la causa effettiva di questo errore, quindi posso ripararlo?

2011-feb-10 10:56:08 org.apache.catalina.core.StandardWrapperValve invoke 
ALLVARLIG: Servlet.service() for servlet [se.novasoftware.gabriel.SAMLParser] in context with path [/ServiceTier] threw exception [java.lang.IllegalArgumentException: InputStream cannot be null] with root cause 
java.lang.IllegalArgumentException: InputStream cannot be null 
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:120) 
at org.opensaml.xml.parse.BasicParserPool$DocumentBuilderProxy.parse(BasicParserPool.java:643) 
at org.opensaml.xml.parse.BasicParserPool.parse(BasicParserPool.java:216) 
at org.opensaml.xml.XMLConfigurator.load(XMLConfigurator.java:141) 
at org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:148) 
at org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:88) 
at _mynamespace_.saml.ParsedResponse.<init>(ParsedResponse.java:56) 
at _mynamespace_.saml.ParsedResponse.<init>(ParsedResponse.java:104) 
at _mynamespace_.SAMLParser.doPost(SAMLParser.java:29) // servlet entry point 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:662) 

ParsedResponse.java linea 56 è la chiamata bootstrap() nel suo costruttore:

private PersedResponse() throws ConfigurationException { 
    DefaultBootstrap.bootstrap(); // line 56 
    ... 

mentre la linea 104 in quello stesso file è il costruttore che viene chiamato dall'esterno chiamare questo difetto privato costruttore:

public ParsedResponse(final String samlXML) 
     throws UnmarshallingException, ConfigurationException { 
    this(); // line 104 
    ... 

risposta

19

L'aggiunta del openws-1.3.0.jar al gruppo di distribuzione ha fatto il trucco.

Problemi correlati