10.2.3 Timer and Work Manager for Application Serversとの対応

Timer and Work Manager for Application Serversの仕様で,ベンダ依存と規定されている仕様には,アプリケーションサーバでは対応していません。また,CommonJが提供するAPIとアプリケーションサーバが提供するAPIには,仕様差があります。ここでは,アプリケーションサーバが対応していないTimer for Application Serversの仕様,アプリケーションサーバが対応していないWork Manager for Application Serversの仕様,およびCommonJとアプリケーションサーバで動作が異なるAPIについて説明します。

<この項の構成>
(1) アプリケーションサーバが対応していないTimer for Application Serversの仕様
(2) アプリケーションサーバが対応していないWork Manager for Application Serversの仕様
(3) CommonJとアプリケーションサーバで動作が異なるAPI

(1) アプリケーションサーバが対応していないTimer for Application Serversの仕様

アプリケーションサーバが対応していないTimer for Application Serversの仕様について次の表に示します。

表10-7 アプリケーションサーバが対応していないTimer for Application Serversの仕様(ベンダ依存機能)

アプリケーションサーバが対応していない仕様備考
最大スケジューリング数のカスタマイズ最大スケジューリング数は50です。変更できません。
  • TimerManagerのリスナを実装するクラス
  • Java EEのコンポーネントを継承しない一般のJavaオブジェクト以外のオブジェクト(EJBやサーブレットなど)
javax.ejb.EnterpriseBeanを継承するクラスをスケジュールした場合,エラーになります。それ以外の場合はエラーチェックをしません。
実行スレッドへのトランザクションコンテキストの継承項目スケジュール元のトランザクション状態に関係なく,トランザクションなしとなります。CMTのNOT_SUPPORTEDに相当します。
実行スレッドへのJ2EEコンテキストの継承項目のカスタマイズ継承される項目は一定です。
実行スレッドで使用できるJava EEの機能使用できる機能については「10.2.2 スレッドの非同期並行処理で使用できるJava EEの機能」を参照してください。

なお,Timer for Application Serversでは,J2EEアプリケーション中で使用できるコンポーネントについて規定されていません。アプリケーションサーバの場合にTimerManagerで使用できるコンポーネントについては,「10.3.5 TimerManagerを使用したアプリケーションの開発」を参照してください。

(2) アプリケーションサーバが対応していないWork Manager for Application Serversの仕様

アプリケーションサーバが対応していないWork Manager for Application Serversの仕様について次の表に示します。

表10-8 アプリケーションサーバが対応していないWork Manager for Application Serversの仕様(ベンダ依存機能)

アプリケーションサーバが対応していない仕様備考
WorkManagerを使用した非同期スレッド処理のリモートでの実行WorkItemをリモートで実行した場合,ローカルで実行されるダミーのRemoteWorkItemを返します。
最大スケジューリング数のカスタマイズ最大スケジューリング数には制限がありません。
  • TimerManagerのリスナを実装するクラス
  • Java EEのコンポーネントを継承しない一般のJavaオブジェクト以外のオブジェクト(EJBやサーブレットなど)
javax.ejb.EnterpriseBeanを継承するクラスをスケジュールした場合,エラーになります。それ以外の場合,エラーチェックはしません。
アプリケーションの開始以外のタイミングでのWorkManagerの作成WorkManagerはアプリケーションの開始時にだけ作成されます。
実行スレッドへのトランザクションコンテキストの継承項目スケジュール元のトランザクション状態に関係なく,トランザクションなしとなります。CMTのNOT_SUPPORTEDに相当します。
実行スレッドへのJ2EEコンテキストの継承項目のカスタマイズ継承される項目は一定です。
実行スレッドで使用できるJava EEの機能使用できる機能については「10.2.2 スレッドの非同期並行処理で使用できるJava EEの機能」を参照してください。

なお,Work Manager for Application Serversでは,J2EEアプリケーション中で使用できるコンポーネントについて規定されていません。アプリケーションサーバの場合にWorkManagerで使用できるコンポーネントについては,「10.4.4 WorkManagerを使用したアプリケーションの開発」を参照してください。

(3) CommonJとアプリケーションサーバで動作が異なるAPI

CommonJとアプリケーションサーバで動作が異なるAPIを次の表に示します。

表10-9 CommonJとアプリケーションサーバで動作が異なるAPI

クラスメソッドアプリケーションサーバでの動作
commonj.timers.TimerManagerschedule(TimerListener listener,Date time)listenerがjavax.ejb.EnterpriseBeanを継承している場合,IllegalArgumentExceptionを返します。
schedule(TimerListener listener,long delay)listenerがjavax.ejb.EnterpriseBeanを継承している場合,IllegalArgumentExceptionを返します。
schedule(TimerListener listener,Date firstTime,long period)listenerがjavax.ejb.EnterpriseBeanを継承している場合,IllegalArgumentExceptionを返します。
schedule(TimerListener listener,long delay,long period)listenerがjavax.ejb.EnterpriseBeanを継承している場合,IllegalArgumentExceptionを返します。
scheduleAtFixedRate(TimerListener listener,Date firstTime,long period)listenerがjavax.ejb.EnterpriseBeanを継承している場合,IllegalArgumentExceptionを返します。
scheduleAtFixedRate (TimerListener listener,long delay,long period)listenerがjavax.ejb.EnterpriseBeanを継承している場合,IllegalArgumentExceptionを返します。
commonj.work.WorkManagerschedule(Work work)workがnullの場合,WorkExceptionを返します。
schedule(Work work,WorkListener wl)workがnullの場合,WorkExceptionを返します
WorkListenerがjavax.ejb.EnterpriseBeanを継承している場合,IllegalArgumentExceptionを返します。