7

現在、次のURLでJAX-RPCWebサービスを公開しています

http://xx.xx.xx.xx/myservice/MYGatewaySoapHttpPort?wsdl

上記のWSDLからWebServiceを生成することにより、WebサービスをJAX-WSに移行しました

ただし、新しいWebサービスには次のURLからアクセスできます

http://xx.xx.xx.xx/myservice/MYGateway?wsdl

最初に述べたのと同じURLでJAX-WSWebサービスにアクセスできるようにするにはどうすればよいですか?お客様が問題を起こさないように。

アップデート:

私が作成したWSDLのサービス要素は期待どおりです

<WL5G3N0:service name="MyGateway">
    <WL5G3N0:port binding="WL5G3N2:MyGatewaySoapHttp" name="MyGatewaySoapHttpPort">
      <WL5G3N3:address location="http://xx.xx.xx/myservice/MyGatewaySoapHttpPort"/>
    </WL5G3N0:port>
  </WL5G3N0:service>

ただし、JAX-WSのWSDLは同じではなく、このWSDLは自動生成されます。

<WL5G3N0:service name="MyGateway">
- <WL5G3N0:port binding="WL5G3N2:MyGatewaySoapHttp" name="MyGatewaySoapHttpPort">
  <WL5G3N3:address location="http://xx.xx.xx/myservice/MyGateway" /> 
  </WL5G3N0:port>
 </WL5G3N0:service

OracleEclipseIndigoを使用してWebサービスを作成しました。

注釈を付けて変更できますか?

よろしく、

4

3 に答える 3

17

これにより、クライアントでエンドポイントを設定できます。

MYGateway service = new MYGateway();
MYGatewaySoapServiceHttpPort port = service.getMYGatewaySoapServiceHttpPort();
BindingProvider bp = (BindingProvider) port;
bp.getRequestContext().put(
    BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
    "http://xx.xx.xx.xx/myservice/MYGateway");

(エンドポイントはWSDLではなくサービスを示す必要があることを指摘してくれたユーザーFoGHに感謝します)

編集:org.codehaus.mojo.jaxws-maven-pluginの設定に関する詳細情報は次のとおりです。

pom.xml内:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>MyGateway</id>
            <goals>
                <goal>wsimport</goal>
            </goals>
            <configuration>
                <wsdlDirectory>src/main/resources/META-INF/wsdl</wsdlDirectory>
                <wsdlFiles>
                    <wsdlFile>MyGateway.wsdl</wsdlFile>
                </wsdlFiles>
                <wsdlLocation>MyGatewaySystemId</wsdlLocation>
                <!-- Line below to avoid regeneration bug if you have multiple executions -->   
                <staleFile>${project.build.directory}/jaxws/stale/wsdl.MyGateway.done</staleFile>
            </configuration>
        </execution>
    </executions>
</plugin>

./src/main/resources/META-INF/jax-ws-catalog.xml:

<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
    <system systemId="MyGatewaySystemId" uri="wsdl/MyGateWay.wsdl"/>
</catalog>

WSDLを./src/main/resources/META-INF/wsdl/MyGateway.wsdlに配置します

したがって、プラグイン構成のwsdlLocationは、jax-ws-catalog.xmlファイルのエントリを参照します。このファイルは、相対ディレクトリ表記を使用して実際のWSDLファイルを指します。

値'MyGatewaySystemId'は、生成されたWebサービスコードに場所として含まれます。したがって、これをWSDLの実際のURLに変更できます。これが一貫して機能するためには、ビルド環境(dev、test、prod)の正しいURLを設定するようにpomを構成する必要があることに注意してください。このための正しい方向へのポインタは、Mavenプロファイルを使用することです。

ヒント:オンラインWSDL(および関連するXSD)のコピーをダウンロードする簡単な方法は、そのためのSoapUIプロジェクトを作成してから、[WSDLコンテンツ]タブに移動することです。

于 2012-07-20T12:10:40.280 に答える
2

非常に基本的なポイントを見逃しました。web.xmlのサーブレットマッピングはすべてのトリックを行いました。詳細については、以下のリンクをご覧ください

http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=%2Fcom.ibm.websphere.wsfep.multiplatform.doc%2Finfo%2Fae%2Fae%2Ftwbs_customwebxml.html

于 2012-07-20T15:48:56.670 に答える
0

ServiceJAX-WSWSDLファイルの要素を確認してください。

<service name="Hello_Service">
      <documentation>WSDL File for HelloService</documentation>
      <port binding="tns:Hello_Binding" name="Hello_Port">
         <soap:address
            location="http://www.examples.com/SayHello/">
      </port>
   </service>

location要素は、Webサービスにアクセスするためのポートを指定します。

これを読む

于 2012-07-20T09:38:49.300 に答える