Hitachi

Cosminexus V11 アプリケーションサーバ SOAPアプリケーション開発の手引


2.1.1 RPC形態のSOAPアプリケーション

RPC形態のSOAPアプリケーションでは,次のどちらかの方法でSOAPサービスを利用します。

また,スタブを使用する場合,SOAPアプリケーションのプログラムにEJBを利用することもできます。

ここでは,各方法の概要について説明します。なお,RPC形態のSOAPアプリケーションを開発するには,WSDLが必要になります。WSDLを使用した開発方法については,「3.1 RPC形態のSOAPアプリケーション開発の流れ」を参照してください。

また,RPC形態のSOAPアプリケーションの開発例については,「4. RPC形態のSOAPアプリケーションの開発例」を参照してください。

〈この項の構成〉

(1) スタブを使用する場合

クライアントとサーバ間のインタフェースに関する処理を隠蔽したスタブおよびスケルトンを介して,SOAPメッセージを送受信します。

スタブを使用したRPC形態のSOAPアプリケーションを実現するには,クライアント側にSOAPサービス呼び出し処理を,サーバ側にSOAPサービスを実装します。クライアント側に実装するSOAPサービス呼び出し処理は,開発支援コマンドによって自動生成されるスタブを使用し,SOAPサービスに渡す引数や戻り値に関する処理を記述することで実装できます。スタブの使用方法については,「4.1.8 クライアント側の処理を実装する」を参照してください。スタブを使用してRPC形態のSOAPアプリケーションを実現する場合の処理の流れを示します。

図2‒2 RPC形態のSOAPアプリケーションの処理の流れ(スタブ)

[図データ]

図に沿って,SOAPアプリケーションの処理の流れを説明します。図中に示した番号が次に示す番号に対応しています。

  1. SOAPサービス呼び出し処理では,SOAPサービスのURL,メソッド名,および引数をAPIで指定し,SOAPサービスを呼び出します。

  2. SOAPクライアントライブラリは,APIで指定された内容からSOAPメッセージを作成し,SOAPエンジンに対してリクエストメッセージを送信します。

  3. リクエストメッセージを受信したSOAPエンジンは,SOAPメッセージから呼び出すSOAPサービス,メソッド,および引数を解析して,SOAPサービスを呼び出します。

  4. SOAPサービスはパラメタの内容によって処理をして,結果を戻り値としてSOAPエンジンに返します。

  5. SOAPエンジンは戻り値によってSOAPメッセージを作成し,レスポンスメッセージをSOAPクライアントライブラリに送信します。

  6. レスポンスメッセージを受信したSOAPクライアントライブラリは,SOAPメッセージから戻り値を解析し,呼び出し元に返します。

(2) EJBを利用する場合

EJBを利用したSOAPアプリケーションは,次の形態に分けられます。

EJBからSOAPサービスを呼び出す形態の処理は,クライアント部分をEJBで実装することを除けば,EJBを利用しない場合と同様です。

EJBをSOAPサービスのエンドポイントとする形態の処理の流れを次に示します。

図2‒3 EJBをSOAPサービスのエンドポイントとする場合の処理の流れ

[図データ]

図に沿って,EJBをSOAPサービスのエンドポイントとする形態の処理を説明します。図中に示した番号が次に示す番号に対応しています。

  1. クライアント側でSOAPメッセージを生成し,送信先にリクエストメッセージを送信します。

  2. メッセージを受信したSOAPエンジンは,J2EEサーバに配置されたEJBを呼び出します。EJBの呼び出しには,ホームインタフェースおよびリモートインタフェースを利用します。SOAPエンジンと同じJ2EEサーバに配置されたEJBだけでなく,別のJ2EEサーバに配置されたEJBを呼び出すこともできます。

  3. 呼び出されたEJBによって処理を行い,処理結果をSOAPエンジンに返します。

  4. SOAPエンジンは,処理結果をクライアントに返します。

SOAPサービスのエンドポイントとして配置できるEJBは,J2EEサーバに配置された,Stateless Session Bean,Stateful Session Bean,およびEntity Beanです。

なお,EJBを利用したSOAPアプリケーションの開発例については,「4.3 既存のEJBを利用して開発する場合」を参照してください。EJBからSOAPサービスを呼び出す場合の注意事項については,「3.12 EJB利用時の注意事項」の「EJBからSOAPサービスを呼び出す場合の注意事項」を参照してください。

(3) DIIを使用する場合

DIIとは,サービスインタフェースおよびスタブを使用しないで,JAX-RPCで定義された標準APIでSOAPサービスを呼び出す機能です。スタブを使用しないため,呼び出し先は特定のサービスに固定されることなく,動的に呼び出し先を変更できます。

DIIを使用してRPC形態のSOAPアプリケーションを実現する場合の処理の流れを示します。

図2‒4 RPC形態のSOAPアプリケーションの処理の流れ(DII)

[図データ]

図に沿って,SOAPアプリケーションの処理の流れを説明します。図中に示した番号が次に示す番号に対応しています。

  1. オペレーション名やパラメタなどのサービス呼び出しに必要な情報をCallオブジェクトに入力し,SOAPサービスを呼び出します。サービス呼び出しに必要な情報は,WSDLから読み込んで保持します。

  2. SOAPクライアントライブラリ(JAX-RPC API)は,入力した情報をリクエストメッセージに含め,サーバに送信します。

  3. リクエストメッセージを受信したSOAPエンジンは,SOAPメッセージから呼び出すSOAPサービス,メソッド,および引数を解析して,SOAPサービスを呼び出します。

  4. SOAPサービスはパラメタの内容によって処理をして,結果を戻り値としてSOAPエンジンに返します。

  5. SOAPエンジンは戻り値によってSOAPメッセージを作成し,レスポンスメッセージをSOAPクライアントライブラリに送信します。

  6. レスポンスメッセージを受信したSOAPクライアントライブラリは,SOAPメッセージから戻り値を解析し,呼び出し元に返します。