Cosminexus 機能解説

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

9.13.6 Application Server独自のConnector 1.5 API仕様

ここでは,Connector 1.5で仕様のインタフェースに対して,Application Server独自で規定した仕様について説明します。

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

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

Cosminexusでは,二つのメソッドの仕様を規定しています。

(a) createEndpointメソッド

形式
public MessageEndpoint createEndpoint(XAResource xaResource) throws UnavailableException

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

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

形式
public boolean isDeliveryTransacted(Method method) throws NoSuchMethodException

Application Server独自の仕様
Application ServerではConnector 1.5仕様のリソースアダプタに対してCMTをサポートしていません。このため,常にfalseが返却されます。

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

Application Serverでは,三つのメソッドの仕様を規定しています。

(a) beforeDeliveryメソッド

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

Application Server独自の仕様
例外について規定しています。

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

形式
public void afterDelivery() throws ResourceException

Application Server独自の仕様
例外について規定しています。

例外
Application Serverで規定した例外の動作について示します。
例外 例外が発生するタイミング
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()

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

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

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

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

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

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