10.19 EJBのWebサービス呼び出し
EJBをWebサービスとして呼び出せる条件と使用できる機能について説明します。
EJBの条件を次に示します。
- EJBのバージョン
EJB 3.0以降でWebサービスとして呼び出せます。
- EJBの種類
ステートレスセッションBeanのEJBをWebサービスとして呼び出せます。
- インタフェース
EJB Webサービスでは,ビジネスインタフェースを用意する必要はありません。ホームインタフェースを併用できます。
EJB Webサービスが,ビジネスインタフェース,ホームインタフェース,およびコンポーネントインタフェースを持つ場合,Webサービス経由ではこれらのインタフェースを介してメソッドを呼び出すことはできません。
EJB Webサービスがビジネスインタフェースを持つ場合,EJB WebサービスはEJBのローカル呼び出しができます。EJB Webサービスがビジネスインタフェースを持たない場合,EJB WebサービスはWebサービスとして呼び出せますが,EJBとして呼び出すことはできません。
ホームインタフェースはjavax.ejb.RemoteHomeアノテーションまたはjavax.ejb.LocalHomeアノテーションによって指定される場合だけWebサービスとして呼び出せます。DDによって指定される場合はWebサービスとして呼び出せません。
- <この節の構成>
- (1) EJBのWebサービス呼び出しでのEJB機能
- (2) EJBのWebサービス呼び出しで使用できるアプリケーションサーバ機能
(1) EJBのWebサービス呼び出しでのEJB機能
EJBをWebサービスとして呼び出す際に,同時に使用できるEJBの機能を次に示します。ただし,EJBのWebサービス実装クラスだけで使用でき,ハンドラチェインでは使用できません。
- インターセプタの使用
- CMTおよびBMTのトランザクション管理
- javax.annotation.security.PermitAllアノテーションおよびjavax.annotation.security.DenyAllアノテーションによるアクセス管理
- リソース接続
- javax.annotation.ResourceアノテーションによるWebサービスコンテキストのインジェクション
Webサービスコンテキストのインジェクションについては,「10.21.2 Webサービスコンテキストのインジェクション」を参照してください。
- Timer Service
- 注意
- タイムアウトメソッドは,サービスメソッドとして公開できません。タイムアウトメソッドをpublic以外の修飾子にするか,またはexclude要素の要素値が"true"のjavax.jws.WebMethodアノテーションをアノテートしてサービスメソッドから除外してください。
EJBをWebサービスとして呼び出す際に,同時に使用できないEJBの機能を次に示します。
- クライアントからのトランザクションコンテキストの引き継ぎ
- クライアントからのセキュリティコンテキストの引き継ぎ
(2) EJBのWebサービス呼び出しで使用できるアプリケーションサーバ機能
JAX-WSは,EJBをWebサービスとして呼び出す際に,cosminexus.xmlで設定できるアプリケーションサーバの機能を同時に使用できます。使用できるアプリケーションサーバの機能を次に示します。
- 同時実行スレッド数の設定
- 実行待ちキューサイズの設定
- セキュリティロールの設定
これらの機能を使用するには,WARファイル名を設定します。WARファイル名の設定については「3.5.4(3) 設定用WARファイル名」を参照してください。なお,これらのcosminexus.xmlの設定項目以外でも,EJB Webサービス以外のWebアプリケーションでは利用できます。