Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)

[目次][用語][索引][前へ][次へ]

3.16.7 アプリケーションサーバ独自のConnector 1.5 API仕様

ここでは,Connector 1.5で仕様のインタフェースに対して,アプリケーションサーバ独自で規定した仕様について説明します。

<この項の構成>
(1) javax.resource.spi.endpoint.MessageEndpointFactoryインタフェース
(2) javax.resource.spi.endpoint.MessageEndpointインタフェース
(3) メッセージリスナのメソッド

(1) javax.resource.spi.endpoint.MessageEndpointFactoryインタフェース

アプリケーションサーバでは,二つのメソッドの仕様を規定しています。

(a) createEndpointメソッド

形式
public MessageEndpoint createEndpoint(XAResource xaResource) throws UnavailableException

アプリケーションサーバ独自の仕様
  • EJBを含むJ2EEアプリケーションの停止処理を開始したあとでこのメソッドが呼び出された場合は,javax.resource.spi.UnavailableExceptionがスローされます。
  • このメソッドの中でMessage-driven Beanのインスタンス取得処理が実行されます。Message-driven Beanのインスタンスプールの上限に達していた場合は,Message-driven Beanのインスタンスを取得できるか,J2EEアプリケーションが停止するまで,メソッドがリターンされません。

例外
アプリケーションサーバで規定した例外の動作について示します。
例外 例外が発生するタイミング
javax.resource.spi.UnavailableException
  • EJBを含むJ2EEアプリケーションの停止処理を開始したあとでこのメソッドが呼び出した場合
  • Message-driven Beanのインスタンスの取得に失敗した場合
(b) isDeliveryTransactedメソッド

形式
public boolean isDeliveryTransacted(Method method) throws NoSuchMethodException

アプリケーションサーバ独自の仕様
J2EEサーバ用ユーザプロパティファイルのejbserver.distributedtx.XATransaction.enabledプロパティにtrueを指定すると,引数で渡されたメソッドのトランザクション属性にCMTのRequiredが指定されている場合に,trueを返却されます。

(2) javax.resource.spi.endpoint.MessageEndpointインタフェース

アプリケーションサーバでは,三つのメソッドの仕様を規定しています。

(a) beforeDeliveryメソッド

形式
public void beforeDelivery(Method method) throws NoSuchMethodException, ResourceException

アプリケーションサーバ独自の仕様
例外について規定しています。

例外
アプリケーションサーバで規定した例外の動作について示します。
例外 例外が発生するタイミング
java.lang.IllegalStateException
  • EJBを含むJ2EEアプリケーションの停止処理を開始したあとでメッセージリスナのメソッドを呼び出した場合
  • release()メソッドがすでに呼び出されている場合
javax.resource.spi.IllegalStateException
  • 不正な順序で呼び出した場合(beforeDeliveryメソッド呼び出し後に再度beforeDeliveryメソッドを呼び出した場合。またはメッセージリスナのメソッドの呼び出し後にbeforeDeliveryメソッドを呼び出した場合)
javax.resource.spi.UnavailableException
  • 予期しない例外が発生した場合
(b) afterDeliveryメソッド

形式
public void afterDelivery() throws ResourceException

アプリケーションサーバ独自の仕様
例外について規定しています。

例外
アプリケーションサーバで規定した例外の動作について示します。
例外 例外が発生するタイミング
java.lang.IllegalStateException
  • EJBを含むJ2EEアプリケーションの停止処理を開始したあとでメッセージリスナのメソッドを呼び出した場合
  • release()メソッドがすでに呼び出されている場合
javax.resource.spi.IllegalStateException
  • 不正な順序で呼び出した場合(Option Bのメッセージリスナのメソッド呼び出し後以外のタイミングでafterDelivery()を呼び出した場合)
javax.resource.spi.UnavailableException
  • 予期しない例外が発生した場合

注※ Connector 1.5仕様に記述されているメッセージ配送オプションです。


(c) releaseメソッド

形式
public void release()

アプリケーションサーバ独自の仕様
このメソッドを呼び出すと,エンドポイントに対応づけられたMessage-driven Beanのインスタンスが解放され,インスタンスプールに戻ります。
エンドポイントを使用し終わったら,必ずこのメソッドを呼び出して,Message-driven Beanをインスタンスプールに戻すように実装してください。

例外
アプリケーションサーバで規定した例外の動作について示します。
例外 例外が発生するタイミング
java.lang.IllegalStateException
  • EJBを含むJ2EEアプリケーションの停止処理を開始したあとでメッセージリスナのメソッドを呼び出した場合
  • release()メソッドがすでに呼び出されている場合

(3) メッセージリスナのメソッド

インタフェースはメッセージリスナのインタフェースで定義されます。ここでは,アプリケーションサーバで規定した例外の動作について示します。

例外 例外が発生するタイミング
メッセージリスナのインタフェースに指定された例外
  • Message-driven Beanの実行時(システム例外が発生した時以外)
javax.ejb.EJBException
  • Message-driven Beanの実行時(システム例外が発生した時)
java.lang.IllegalStateException
  • EJBを含むJ2EEアプリケーションの停止処理を開始したあとでメッセージリスナのメソッドを呼び出した場合
  • release()メソッドがすでに呼び出されている場合
  • 不正な順序で呼び出した場合(Option Bのメッセージ配送で,メッセージリスナのメソッドを呼び出したあと,続けてメッセージリスナのメソッドを呼び出した場合)

注※ Connector 1.5仕様に記述されているメッセージ配送オプションです。