Môi trường triển khai: Windows Server 2008, Tomcat 7.0.5, Oracle JRE 1.6. Môi trường phát triển cùng với Eclipse Helios.OpenSAML bootstrap() lưới tôi "InputStream không thể rỗng"
Khi tôi cố gắng triển khai ứng dụng Java của mình sử dụng OpenSAML 2.3.1 và kiểm tra nó trực tiếp, nó không muốn chạy. Nhìn qua mã nguồn và theo dõi ngăn xếp, có vẻ như là DefaultBootstrap.bootstrap()
kết thúc gây ra java.lang.IllegalArgumentException: InputStream cannot be null
. Tôi bao gồm dấu vết ngăn xếp đầy đủ bên dưới.
Phiên bản phần mềm trên hệ thống triển khai đích, hoặc ít nhất được cho là giống hệt như hộp phát triển của tôi, nơi mọi thứ chỉ chạy tốt, nhưng tất nhiên là tôi không triển khai bằng .war . Tôi nhận được cảm giác khác biệt rằng tôi thiếu một số tệp XML hoặc DTD trong kho lưu trữ triển khai, nhưng cảm giác đó không giúp tôi nhiều trong việc sửa chữa nó. Googling cho các phần của stacktrace cũng không thực sự giúp tôi nhiều.
Tôi bắt đầu theo dõi nguyên nhân gốc thực sự của lỗi này ở đâu, vì vậy tôi có thể khắc phục?
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 dòng 56 là bootstrap() gọi trong constructor của nó:
private PersedResponse() throws ConfigurationException {
DefaultBootstrap.bootstrap(); // line 56
...
trong khi dòng 104 trong cùng tập tin là các nhà xây dựng đó được gọi từ bên ngoài gọi mặc định tin này hàm tạo:
public ParsedResponse(final String samlXML)
throws UnmarshallingException, ConfigurationException {
this(); // line 104
...