2

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であることがわかりました。これは通常、クライアントとサーバーの間に何らかのネットワークの問題(またはファイアウォール)があるという仮定を示しています。ユニットテストを同じマシンで実行しているので、これはすべて非常に混乱します。そのためではありません。

4

1 に答える 1

0

WS実装の内部動作を理解するのにかなりの時間がかかりましたが、今は解決策があります。

問題はJBossネイティブ内にあり、Metroで生成されたURLを処理できません。今のところ私の悩みの種は、ローカルリソースからWSDLとXSDをロードし、エンドポイントアドレスを実サーバーアドレスに手動で変更することです。

@artbristol、あなたの助けに感謝します。

于 2011-05-13T10:52:26.560 に答える