LoginSignup
4
3

More than 5 years have passed since last update.

サービスプロバイダから入手したWSDLに記述されているサービスアドレスが実際のアドレスと異なるので調べた

Last updated at Posted at 2016-04-23

サービスプロバイダから入手したWSDLに記述されているサービスアドレスが

  <soap:address location="http://localhost:8080/endpoint"/>

となっているため、このWSDLを使って作成したリクエスタではどこに接続すればいいのか決定できません。

まずはJAX-WSでのWebサービス構築方法について簡単に整理してみました。

ボトムアップアプローチによるサービスプロバイダの作成

先にサービス実装クラス、引数/戻り値クラスを作成します。このクラスからツールによってWSDLやWebサービスコンポーネント内で必要となるクラス群を自動生成する方法です。

実際ににやってみました。まず、サービスプロバイダクラスWebService1を実装します。

package webservice.provider;

import javax.jws.WebMethod;
import javax.jws.WebService;

import webservice.data.Parameter;
import webservice.data.Result;

@WebService
public class WebService1 {

    @WebMethod
    public Result service(Parameter parameter) {
        Result result = new Result();
        result.setName(parameter.getName());
        result.setValue(parameter.getValue());
        return result;
    }
}

できた実装クラスを指定してwsgenコマンドを実行してWSDLなどを生成します。

wsgen -cp bin -d output webservice.provider.WebService1

生成されたWSDLでは、サービスのURL(soap:address要素のlocation属性)は

  <service name="WebService1Service">
    <port name="WebService1Port" binding="tns:WebService1PortBinding">
      <soap:address location="REPLACE_WITH_ACTUAL_URL"/>
    </port>
  </service>

のようになっています。このWSDLを利用して作成したリクエスタはこのままでは実際のサービスに接続できないため、文字通りREPLACE_WITH_ACTUAL_URLの部分を置き換えて使用します。受領したWSDLに手を加えて利用するものではないという認識だったのですが正しくなかったようです。

何らかの方法でWSDLを作成した場合のデフォルトのURLがhttp://localhost:8080/endpointとなるのではないかと考えてhttp://localhost:8080/endpointで検索したのですが有用な情報が得られませんでした。いっぽうREPLACE_WITH_ACTUAL_URLで検索するといろんな情報が得られました。この置き換えをantで実行するという書き込みがあったので参考にさせてもらいます。

  <replace file="${wsdl.file}" token="REPLACE_WITH_ACTUAL_URL" value="${endpoint.url}"/>

受領したWSDLのlocationがなぜhttp://localhost:8008/endpointとなっているのか不明なのですが、アドレスURLは実際のものに置き換えて使えばよさそうですので、ビルド時に置き換えて利用する方法を採用する方向で検討しましょう。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3