プロキシクライアントによって Web サービスオペレーションが呼び出されます。プロキシクライアントは、特定の Web サービスのために、WSDL ファイルから生成されたローカルプロキシ上にメソッドを呼び出します。プロキシオブジェクトは、リモート Web サービスとの相互作用を処理します。プロキシの生成には WSDL2Java ツールを使用します。
WSDL2Java ツールは、Web サービスの WSDL ドキュメントの情報に基づいて Web サービスプロキシを生成します。プロキシとは、実際の Web サービスと同じインターフェイスを持つローカルオブジェクトのことです。これを使用すると、Web サービスをローカルオブジェクトであるかのように呼び出すことができます。
次の手順では、WSDL2Java ツールを使用して Trip および Reservation Web サービスのプロキシコードを生成します。その後、プロキシコードを使用して、ターゲット Web サービスを呼び出すプロキシクライアントを作成します。
>cd <JRun のルートディレクトリ>\servers\tutorial\travelnet-ear\ travelnet-war\WEB-INF\classes >setenv
メモ: setenv.bat ファイルでは、JRUN_HOME がデフォルトの JRun インストールディレクトリ (<JRun のルートディレクトリ>) に設定されています。デフォルトのディレクトリ以外の場所に JRun をインストールした場合は、setenv.bat ファイルの JRUN_HOME を編集してください。
UNIX ユーザー login、profile ファイル、またはシェル rc/profile ファイルに次のように追加してください。
JRUN_HOME=/path/to/JRun4 PATH=$PATH:$JRUN_HOME/bin CLASSPATH=$CLASSPATH:$JRUN_HOME/lib/jrun.jar:$JRUN_HOME/lib/ webservices.jar>wsdl2java -p compass Trip.wsdl >wsdl2java -p compass Reservation.wsdl >cd compass >javac *.java
WSDL2Java のコマンドラインスイッチの詳細については、『JRun プログラマーガイド』を参照してください。
<JRun のルートディレクトリ>\servers\tutorial\travelnet-ear\travelnet-war\
WEB-INF\classes\compass ディレクトリには、次の .java および .class ファイルがあります。
プロキシコードを作成したら、Web サービスプロキシオブジェクトをインスタンス化してそのメソッドを呼び出すことによって、ターゲット Web サービスオペレーションを呼び出すプロキシクライアントを作成する必要があります。
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 メソッドを呼び出すことによって、旅行のリストが表示されます。
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 で選択された旅行の詳細な情報が表示されます。
// 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 で旅行を予約します。
http://localhost:8101/travelnet/home.jsp
メモ: samples JRun サーバを実行しておく必要があります。
旅行情報が含まれている TravelNet ホームページが表示されます。