Linux JBoss 5.0.1 / JBossWS Native 3.1.1で実行されているWebサービスクライアントを作成しています。これは、Windows Tomcat 6.0.29 /MetroStackで実行されているサービスを呼び出しています。
WSDLと参照されるXSDファイルにはブラウザーからアクセスでき、私が作成したJUnitテストも問題なく機能します。しかし、クライアントがJBoss内で実行されている場合、次のスタックトレースが取得されます。
Caused by: org.jboss.ws.metadata.wsdl.WSDLException: javax.wsdl.WSDLException: WSDLException (at /definitions/types/xsd:schema): faultCode=PARSER_ERROR: Problem parsing 'http://server:8280/ValueListService/?xsd=1'.: org.xml.sax.SAXParseException: Premature end of file.
at org.jboss.ws.tools.wsdl.WSDLDefinitionsFactory.parse(WSDLDefinitionsFactory.java:152)
at org.jboss.ws.metadata.umdm.ServiceMetaData.getWsdlDefinitions(ServiceMetaData.java:293)
at org.jboss.ws.metadata.builder.jaxws.JAXWSClientMetaDataBuilder.buildMetaData(JAXWSClientMetaDataBuilder.java:84)
at org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.<init>(ServiceDelegateImpl.java:138)
at org.jboss.ws.core.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:63)
at javax.xml.ws.Service.<init>(Service.java:79)
at javax.xml.ws.Service.create(Service.java:96)
at ...
私が見つけたJBossWSWSDL実装をデバッグすることにより、参照されたXSDから作成されたInputStreamがnullであることがわかりました。これは通常、クライアントとサーバーの間に何らかのネットワークの問題(またはファイアウォール)があるという仮定を示しています。ユニットテストを同じマシンで実行しているので、これはすべて非常に混乱します。そのためではありません。