Web サービスプロキシクライアントの生成

プロキシクライアントによって Web サービスオペレーションが呼び出されます。プロキシクライアントは、特定の Web サービスのために、WSDL ファイルから生成されたローカルプロキシ上にメソッドを呼び出します。プロキシオブジェクトは、リモート Web サービスとの相互作用を処理します。プロキシの生成には WSDL2Java ツールを使用します。

WSDL2Java ツールは、Web サービスの WSDL ドキュメントの情報に基づいて Web サービスプロキシを生成します。プロキシとは、実際の Web サービスと同じインターフェイスを持つローカルオブジェクトのことです。これを使用すると、Web サービスをローカルオブジェクトであるかのように呼び出すことができます。

次の手順では、WSDL2Java ツールを使用して Trip および Reservation Web サービスのプロキシコードを生成します。その後、プロキシコードを使用して、ターゲット Web サービスを呼び出すプロキシクライアントを作成します。

プロキシコードを生成するには

WSDL2Java のコマンドラインスイッチの詳細については、『JRun プログラマーガイド』を参照してください。

<JRun のルートディレクトリ>\servers\tutorial\travelnet-ear\travelnet-war\
WEB-INF\classes\compass ディレクトリには、次の .java および .class ファイルがあります。
ファイル
説明
Reservation
(エンコードされた WSDL 用の ServicePortName.java)
このサービスが提供する Java インターフェイスです。このインターフェイスには、Web サービスオペレーションのメソッド署名が含まれています。
ReservationService
(ServiceName.java)
ServiceNameLocator.java クラスが実装しているファクトリインターフェイスです。
インターフェイス名には、WSDL ドキュメントのサービス名が付けられます。
ReservationServiceLocator
(ServiceNameLocator.java)
プロキシのインスタンスを取得するファクトリ。ServiceNameService.java インターフェイスを実装します。WSDL ファイルのサービス名から生成されます。
クラス名は、WSDL ドキュメントのサービス名に接尾辞 Locator を付けて作成されます。WSDL ファイルに複数のサービスが記述されている場合は、サービスごとに 1 つのクラスが生成されます。このクラス内の get メソッドを使用して、Web サービスインターフェイスを実装するスタブオブジェクトを取得します。
ReservationSoapBindingStub
(ServiceBindingNameStub.java)
Web サービスプロキシクラスです。Axis のクライアント API を使用して Web サービスを呼び出す ServicePortName.java インターフェイスを実装します。
クラス名は、サービスバインディング名に接尾辞 Stub を付けて作成されます。
Trip
(エンコードされた WSDL 用の ServicePortName.java)
このサービスが提供する Java インターフェイスです。このインターフェイスには、Web サービスオペレーションのメソッド署名が含まれています。
TripInfo
返された Trip サービスの getList および getInfo メソッドを処理するために生成される JavaBean です。
TripService
(ServiceName.java)
ServiceNameLocator.java クラスが実装しているファクトリインターフェイスです。
インターフェイス名には、WSDL ドキュメントのサービス名が付けられます。
TripServiceLocator
(ServiceNameLocator.java)
プロキシのインスタンスを取得するファクトリ。ServiceNameService.java インターフェイスを実装します。WSDL ファイルのサービス名から生成されます。
クラス名は、WSDL ドキュメントのサービス名に接尾辞 Locator を付けて作成されます。WSDL ファイルに複数のサービスが記述されている場合は、サービスごとに 1 つのクラスが生成されます。このクラス内の get メソッドを使用して、Web サービスインターフェイスを実装するスタブオブジェクトを取得します。
TripSoapBindingStub
(ServiceBindingNameStub.java)
Web サービスプロキシクラスです。Axis のクライアント API を使用して Web サービスを呼び出す ServicePortName.java インターフェイスを実装します。
クラス名は、サービスバインディング名に接尾辞 Stub を付けて作成されます。

JSP ベースのプロキシクライアントの作成および使用

プロキシコードを作成したら、Web サービスプロキシオブジェクトをインスタンス化してそのメソッドを呼び出すことによって、ターゲット Web サービスオペレーションを呼び出すプロキシクライアントを作成する必要があります。

JSP ベースのプロキシクライアントを作成するには次の手順を実行します。

  1. プロキシファクトリをインスタンス化します。
  2. プロキシをインスタンス化します。
  3. Web サービスメソッドを呼び出します。

JSP ベースのプロキシクライアントを作成するには

  1. ファイル <JRun のルートディレクトリ>\servers\tutorial\travelnet-ear\
    travelnet-war\home.jsp を開きます。ファイルの所定の場所に、次のコードを追加します。
        // 1. プロキシファクトリをインスタンス化します。
    
        TripService factory = new TripServiceLocator();
        // 2. プロキシをインスタンス化します。
        Trip trip = factory.getTrip();
        // 3. Web サービスの getList() メソッドを呼び出します。
        TripInfo[] trips = trip.getList();
    
        int length = trips.length;
        for (int i=0; i<length ; i++) {
        %>
        <tr>
          <td class="contentBG"><a href="tripdetail.jsp?tripId=
    <%= trips[i].getId() %>"><%= trips[i].getName() %></a></td>
          <td class="contentBG"><%= trips[i].getTeaser() %></td>
          <td class="contentBG"><%= df.format(trips[i].getPrice()) %></td>
        </tr>
        <%
        }
      %>
    

    home.jsp には、Compass で提供される Trip Web サービスの getList メソッドを呼び出すことによって、旅行のリストが表示されます。

  2. ファイル <JRun のルートディレクトリ>\servers\tutorial\travelnet-ear\
    travelnet-war\tripdetail.jsp を開きます。ファイルの所定の場所に、次のコードを追加します。
    int tripId=Integer.parseInt(request.getParameter("tripId"));
    // 1. プロキシファクトリをインスタンス化します。
    TripService factory = new TripServiceLocator();
    // 2. プロキシをインスタンス化します。
    Trip trip = factory.getTrip();
    // 3. Web サービスの getInfo() メソッドを呼び出します。
  TripInfo info = trip.getInfo(tripId);

Tripdetail.jsp には、Compass で提供される Trip Web サービスの getInfo メソッドを呼び出すことによって、home.jsp で選択された旅行の詳細な情報が表示されます。

  • ファイル <JRun のルートディレクトリ>\servers\tutorial\travelnet-ear\
    travelnet-war\reservationaction.jsp を開きます。ファイルの所定の場所に、次のコードを追加します。
  •     // 1. プロキシファクトリをインスタンス化します。
    
        ReservationService factory = new ReservationServiceLocator();
        // 2. プロキシをインスタンス化します。
        Reservation stub = factory.getReservation();
        // 3. Web サービスの reserve() メソッドを呼び出します。
      int id = stub.reserve(tripId, firstName, lastName, ccType, 
    ccNumber, ccExpiration);
    

    Reservationaction.jsp では、Compass で提供される Reservation Web サービスの reserve メソッドを呼び出すことによって、旅行が予約されたことを Compass に通知します。

    最後の手順では、Web サービスを使用して Compass Travel と通信する TravelNet で旅行を予約します。

    旅行を予約するには

    1. Web ブラウザで次の URL を開きます。

      http://localhost:8101/travelnet/home.jsp

      メモ:  samples JRun サーバを実行しておく必要があります。

      旅行情報が含まれている TravelNet ホームページが表示されます。

    2. 旅行を選んで予約します。