2011-02-10 19 views
8

Entorno de implementación: Windows Server 2008, Tomcat 7.0.5, Oracle JRE 1.6. Entorno de desarrollo mismo más Eclipse Helios.OpenSAML bootstrap() me redirecciona "InputStream no puede ser nulo"

Cuando intento implementar mi aplicación Java que usa OpenSAML 2.3.1 y probarla en vivo, no desea ejecutarla. Mirando a través del código fuente y el seguimiento de la pila, parece que DefaultBootstrap.bootstrap() termina causando java.lang.IllegalArgumentException: InputStream cannot be null. Estoy incluyendo el seguimiento de pila completo a continuación.

Las versiones de software en el sistema de despliegue de destino son, o al menos se supone que son, exactamente las mismas que en mi caja de desarrollo, donde todo funciona bien, pero por supuesto no despliego usando el .war . Tengo la clara sensación de que me falta algún archivo XML o DTD en el archivo de implementación, pero ese sentimiento por sí solo no me ayuda mucho a solucionarlo. Buscar en Google partes de stacktrace tampoco me ayudó mucho.

¿Dónde empiezo a rastrear la causa real de este error, para que pueda solucionarlo?

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) 

línea ParsedResponse.java 56 es la llamada de arranque() en su constructor:

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

mientras que la línea 104 en ese mismo archivo es el constructor que es llamada desde el exterior de llamar a este defecto privada constructor:

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

Respuesta

19

Añadiendo openws-1.3.0.jar al ensamblaje de implementación se hizo el truco.

Cuestiones relacionadas