0

クライアントを既存の SOAP Web サービスに書き込んでいます。Tomcat で実行されているサービスのインスタンスの WSDL ファイルに対して wsimport ユーティリティを使用してスタブを生成しました。

問題は、wsimport が生成されたコード内で固定の URL アドレスを使用するため、アプリケーションが 1 つの特定のサーバー (たとえば、私のテスト環境) に対して実行されている場合にのみ機能することです。

サービスの実際の展開の URL アドレスを使用してスタブをパラメーター化できる必要があります。


このスレッドによると、デフォルトのコンストラクターではなく 2 つの引数のコンストラクターを使用し、WSDL ファイルの実際の URL アドレスと、デフォルトのコンストラクターで使用されているものと同じ修飾名を渡すと役立つはずです。

これは私にはうまくいきません。次の例外がスローされます。

Exception in thread "main" java.lang.Error: Undefined operation name GetMetadataLanguages
    at com.sun.xml.ws.model.JavaMethodImpl.freeze(JavaMethodImpl.java:327)
    at com.sun.xml.ws.model.AbstractSEIModelImpl.freeze(AbstractSEIModelImpl.java:97)
    at com.sun.xml.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:268)
    at com.sun.xml.ws.client.WSServiceDelegate.addSEI(WSServiceDelegate.java:633)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:328)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:311)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:304)
    at javax.xml.ws.Service.getPort(Unknown Source)
    at com.opentext.livelink.service.docman.DocumentManagement_Service.getBasicHttpBindingDocumentManagement(DocumentManagement_Service.java:66)
    at cz.csinsertdt.util.cs.CSAuthenticationHandler.getDocManagementService(CSAuthenticationHandler.java:91)
    at cz.csinsertdt.TestScenario02.getDocManagementService(TestScenario02.java:264)
    at cz.csinsertdt.TestScenario02.run(TestScenario02.java:73)
    at cz.csinsertdt.TestScenario02.main(TestScenario02.java:57)

私は何を間違っていますか?


例外をスローするコードの部分は次のようになります。

DocumentManagement_Service service = new DocumentManagement_Service(
    new URL(location.toString() + "/DocumentManagement?wsdl"),
    new QName("urn:DocMan.service.livelink.opentext.com", "DocumentManagement")
);

DocumentManagement endpoint = service.getBasicHttpBindingDocumentManagement();
setSoapHeader((WSBindingProvider) endpoint, otAuth);

return endpoint;

otAuth は、別のサービスから取得した認可トークンです。

4

0 に答える 0