Interstage Application Server/Interstage Web Server J2EE ユーザーズガイド
目次 索引 前ページ次ページ

第4部 Webサービス編> 第18章 Webサービスの開発> 18.1 Webサービス(サーバ機能)の開発

18.1.2 Webサービスアプリケーションを開発する

 以下の手順で、Webサービスアプリケーションを作成してください。

1 Webサービスのインタフェースを定義す

1) サービスエンドポイントインタフェーの定義

 サービスエンドポイントインタフェースは、Webサービスとして提供するWebサービスアプリケーションの公開インタフェースを定義する、Javaインタフェースです。

 Webサービスアプリケーションのインタフェースとして、以下の条件を満たすJavaインタフェースを作成します。
 このJavaインタフェースを作成することで、どのようなメソッドをWebサービスとして提供するかを定義します。

 また、WebサービスとRMIoverIIOPの双方から呼び出されるSTATELESS Session Beanを作成する場合には、Remoteインタフェース/Homeインタフェースとサービスエンドポイントインタフェースの両方を作成してください。
 Webサービスからのみ呼び出されるSTATELESS Session Beanの場合には、サービスエンドポイントインタフェースのみ用意する(Remoteインタフェースなどを用意しない)ことも可能です。


 WebサービスとしてStringを引数に取りfloatを返す、getLastTradePriceというメソッドの例です。

package com.example;
public interface StockQuoteProvider extends java.rmi.Remote {
     float getLastTradePrice (String tickerSymbol) throws java.rmi.RemoteException;
}

2) WSDLの生

 iswsgen wsdlコマンドを使用してWSDLを生成します。“インタフェース名”には、サービスエンドポイントインタフェースで作成したサービスエンドポイントインタフェースのクラス名を指定します。

iswsgen wsdl [オプション] "インタフェース名"

 コマンド実行後、以下のファイルが生成されます。

【WARファイルの場合】

iswsgen wsdl com.example.StockQuoteProvider

【ejb-jarファイルの場合】

iswsgen wsdl -module ejb com.example.StockQuoteProvider

2 Webサービスエンドポイントを実装す

 Webサービスエンドポイントは、Webサービスとして提供するWebサービスアプリケーションの処理ロジックを実装したJavaクラスです。
 STATELESS Session Beanの場合、WebサービスエンドポイントはEnterprise Beanクラスです。

 Webサービスアプリケーションの処理ロジックとして、以下の条件を満たすJavaクラスを作成します。Webサービスが呼び出されたときに、このJavaクラスのオブジェクトに対して、呼び出しに対応するメソッドが呼び出されます。

【WARファイルの場合】

【ejb-jarファイルの場合】

初期化と後処理のカスタマイズが必要な場合

 WARファイルの場合、Webサービスエンドポイントでインタフェースを実装することで、起動時の初期化・終了時の後処理が定義できます。

package javax.xml.rpc.server;
 public interface ServiceLifecycle {
   public void init(Object context) throws javax.xml.rpc.ServiceException;
   public void destroy();
 }

 JAX-RPC Service Endpointのインスタンス化時にinitメソッドが呼び出され、インスタンスが解放されるときにdestroyメソッドが呼び出されます。
 initメソッドのパラメタには、下記のServletEndpointContextオブジェクトが渡されます。

 package javax.xml.rpc.server;
 public interface ServletEndpointContext {
   public java.security.Principal getUserPrincipal();
   public javax.xml.rpc.handler.MessageContext getMessageContext();
   public javax.servlet.http.HttpSession getHttpSession();
   public javax.servlet.ServletContext getServletContext();
 }

目次 索引 前ページ次ページ

Copyright 2008 FUJITSU LIMITED