Domanda

Ambiente di distribuzione: Windows Server 2008, Tomcat 7.0.5, Oracle JRE 1.6. Ambiente di sviluppo Same Plus Eclipse Helios.

Quando provo a distribuire la mia applicazione Java che utilizza OpenSAML 2.3.1 e testarla dal vivo, non vuole funzionare. Guardando attraverso il codice sorgente e la traccia dello stack, sembra DefaultBootstrap.bootstrap() finisce per causare java.lang.IllegalArgumentException: InputStream cannot be null. Includo la traccia completa dello stack qui sotto.

Le versioni software sul sistema di distribuzione target sono, o almeno dovrebbero essere, esattamente le stesse della mia scatola di sviluppo, in cui tutto funziona bene, ma ovviamente non mi distribuirò usando lawar. Ho la distinta sensazione che mi manca un 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 devo iniziare a rintracciare la causa principale di questo errore, quindi posso risolverlo?

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 line 56 è la chiamata bootstrap () nel suo costruttore:

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

mentre la riga 104 in quello stesso file è il costruttore che viene chiamato dall'esterno che chiama questo costruttore privato predefinito:

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

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top