Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 互換編


21.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の仕様

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

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

アプリケーションサーバが対応していない仕様

備考

最大スケジューリング数のカスタマイズ

最大スケジューリング数は50です。変更できません。

  • TimerManagerのリスナを実装するクラス

  • Java EEのコンポーネントを継承しない一般のJavaオブジェクト以外のオブジェクト(EJBやサーブレットなど)

javax.ejb.EnterpriseBeanを継承するクラスをスケジュールした場合,エラーになります。それ以外の場合はエラーチェックをしません。

実行スレッドへのトランザクションコンテキストの継承項目

スケジュール元のトランザクション状態に関係なく,トランザクションなしとなります。CMTのNOT_SUPPORTEDに相当します。

実行スレッドへのJ2EEコンテキストの継承項目のカスタマイズ

継承される項目は一定です。

実行スレッドで使用できるJava EEの機能

使用できる機能については「21.2.2 スレッドの非同期並行処理で使用できるJava EEの機能」を参照してください。

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

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

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

表21‒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の機能

使用できる機能については「21.2.2 スレッドの非同期並行処理で使用できるJava EEの機能」を参照してください。

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

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

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

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

クラス

メソッド

アプリケーションサーバでの動作

commonj.timers.TimerManager

schedule(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.WorkManager

schedule(Work work)

workがnullの場合,WorkExceptionを返します。

schedule(Work work,WorkListener wl)

workがnullの場合,WorkExceptionを返します

WorkListenerがjavax.ejb.EnterpriseBeanを継承している場合,IllegalArgumentExceptionを返します。