20.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の仕様について次の表に示します。
アプリケーションサーバが対応していない仕様 |
備考 |
---|---|
最大スケジューリング数のカスタマイズ |
最大スケジューリング数は50です。変更できません。 |
|
javax.ejb.EnterpriseBeanを継承するクラスをスケジュールした場合,エラーになります。それ以外の場合はエラーチェックをしません。 |
実行スレッドへのトランザクションコンテキストの継承項目 |
スケジュール元のトランザクション状態に関係なく,トランザクションなしとなります。CMTのNOT_SUPPORTEDに相当します。 |
実行スレッドへのJ2EEコンテキストの継承項目のカスタマイズ |
継承される項目は一定です。 |
実行スレッドで使用できるJava EEの機能 |
使用できる機能については「20.2.2 スレッドの非同期並行処理で使用できるJava EEの機能」を参照してください。 |
なお,Timer for Application Serversでは,J2EEアプリケーション中で使用できるコンポーネントについて規定されていません。アプリケーションサーバの場合にTimerManagerで使用できるコンポーネントについては,「20.3.5 TimerManagerを使用したアプリケーションの開発」を参照してください。
(2) アプリケーションサーバが対応していないWork Manager for Application Serversの仕様
アプリケーションサーバが対応していないWork Manager for Application Serversの仕様について次の表に示します。
アプリケーションサーバが対応していない仕様 |
備考 |
---|---|
WorkManagerを使用した非同期スレッド処理のリモートでの実行 |
WorkItemをリモートで実行した場合,ローカルで実行されるダミーのRemoteWorkItemを返します。 |
最大スケジューリング数のカスタマイズ |
最大スケジューリング数には制限がありません。 |
|
javax.ejb.EnterpriseBeanを継承するクラスをスケジュールした場合,エラーになります。それ以外の場合,エラーチェックはしません。 |
アプリケーションの開始以外のタイミングでのWorkManagerの作成 |
WorkManagerはアプリケーションの開始時にだけ作成されます。 |
実行スレッドへのトランザクションコンテキストの継承項目 |
スケジュール元のトランザクション状態に関係なく,トランザクションなしとなります。CMTのNOT_SUPPORTEDに相当します。 |
実行スレッドへのJ2EEコンテキストの継承項目のカスタマイズ |
継承される項目は一定です。 |
実行スレッドで使用できるJava EEの機能 |
使用できる機能については「20.2.2 スレッドの非同期並行処理で使用できるJava EEの機能」を参照してください。 |
なお,Work Manager for Application Serversでは,J2EEアプリケーション中で使用できるコンポーネントについて規定されていません。アプリケーションサーバの場合にWorkManagerで使用できるコンポーネントについては,「20.4.4 WorkManagerを使用したアプリケーションの開発」を参照してください。
(3) CommonJとアプリケーションサーバで動作が異なるAPI
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を返します。 |