Interstage Application Server/Interstage Web Server J2EE ユーザーズガイド |
目次 索引 |
第4部 Webサービス編 | > 第18章 Webサービスの開発 | > 18.1 Webサービス(サーバ機能)の開発 |
以下の手順で、Webサービスアプリケーションを作成してください。
サービスエンドポイントインタフェースは、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; } |
iswsgen wsdlコマンドを使用してWSDLを生成します。“インタフェース名”には、サービスエンドポイントインタフェースで作成したサービスエンドポイントインタフェースのクラス名を指定します。
iswsgen wsdl [オプション] "インタフェース名" |
コマンド実行後、以下のファイルが生成されます。
【WARファイルの場合】
iswsgen wsdl com.example.StockQuoteProvider |
【ejb-jarファイルの場合】
iswsgen wsdl -module ejb com.example.StockQuoteProvider |
Webサービスエンドポイントは、Webサービスとして提供するWebサービスアプリケーションの処理ロジックを実装したJavaクラスです。
STATELESS Session Beanの場合、WebサービスエンドポイントはEnterprise Beanクラスです。
Webサービスアプリケーションの処理ロジックとして、以下の条件を満たすJavaクラスを作成します。Webサービスが呼び出されたときに、このJavaクラスのオブジェクトに対して、呼び出しに対応するメソッドが呼び出されます。
【WARファイルの場合】
【ejb-jarファイルの場合】
注) Enterprise Beanクラスに実装するビジネスメソッドについては“Enterprise Beanクラスの作成”の“◆ビジネスメソッドの規約”を参照してください。
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(); } |
目次 索引 |