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