EJB コマンド・グループ

AdminTask オブジェクトの EJB コマンド・グループには、エンタープライズ Bean の取り扱いに使用できるコマンドが用意されています。

removeAutomaticEJBTimers

アプリケーションまたはモジュールは、アノテーションや XML を使用して、自動的に EJB タイマーを作成するようにアプリケーション・サーバーに指示をします。

自動的に作成されたタイマーは、そのタイマーの作成時にアプリケーションまたはモジュールが稼働しているサーバーに関連づけられたスケジューラー・インスタンスで保持されます。スケジュールは、サーバー単位で構成されるため、トポロジーの各サーバーは、固有のスケジューラー・インスタンスを使用することができます。この場合、各サーバーに固有のスケジューラー・インスタンスは、そのサーバーで実行される EJB タイマーをサポートします。

各スケジューラー・インスタンスは、データベース表のセットに関連付けられます。 複数のスケジューラー・インスタンスがある場合、固有接頭部を付けて各スケジューラー・インスタンスを構成し、インスタンスが固有のデータベース表のセットに対応するようにしてください。

自動 EJB タイマーを要求したアプリケーションまたはモジュールがサーバーから削除されると、その自動 EJB タイマーも対応するスケジューラー・インスタンスから削除する必要があります。アプリケーションまたはモジュールが複数サーバーにインストールされ、その各サーバーが固有のスケジューラー・インスタンスを使用していた場合、タイマーはその各スケジューラー・インスタンスから削除する必要があります。言い換えれば、自動作成の EJB タイマーはサーバー単位で削除されます。

場合によっては、アプリケーションまたはモジュールの削除または更新によって、自動作成の EJB タイマーがスケジューラー・インスタンスから削除されます。このシナリオでは、ユーザー処置は必要ありません。

ただし、アプリケーションまたはモジュールの削除あるいは更新の結果、自動作成の EJB タイマーがスケジューラー・インスタンスから削除されない場合もあります。この場合は、removeAutomaticEJBTimers コマンドを使用して EJB タイマーを手動で削除する必要があります。

このコマンドは、接続モードでのみサポートされます。Network Deployment トポロジーでは、デプロイメント・マネージャー、ノード・エージェント、およびスケジューラー・インスタンスを含む管理対象サーバーは、すべて稼働していなければなりません。ベース・トポロジーでは、スタンドアロン・サーバーが稼働している必要があります。

Rational® Application Developer の、サーバーをワークスペース内のリソースで実行する構成シナリオでは、自動作成の EJB タイマーを手動で削除する必要があります。また、プログラムで作成された EJB タイマーは、自動作成の EJB タイマーとは異なり、自動的に削除されることも、このコマンドで削除されることもありません。

Network Deployment トポロジーでは、単一モジュールがトポロジー内のサーバーのサブセットにのみインストールされた場合、そのモジュールに関連付けられた自動的に作成されたタイマーは、そのサーバーのサブセットに関連付けられたスケジューラー・インスタンス (複数可) からのみ削除しなければなりません。モジュールがインストールされていないサーバーに対応するスケジューラー・インスタンスをクリーンアップする必要はありません。

ターゲット・オブジェクト: なし

必須パラメーター:
-appName
削除したい自動作成の EJB タイマーを要求したアプリケーションの名前。(ストリング、必須)

-serverName
削除したい自動作成の EJB タイマーが含まれているアプリケーションまたはモジュールを実行するサーバーの名前。このパラメーターは、アプリケーション・サーバーのホスト名ではなく、論理名を表します。(ストリング、必須)
オプション・パラメーター:
-schedulerJNDIName
このパラメーターは、削除したい自動作成の EJB タイマーを保持するスケジューラー・インスタンスの JNDI名を表します。

サーバー・インスタンスは、自動作成の EJB タイマーをサポートするために、特定のスケジューラー・インスタンスを使用するように常に構成されます。どのスケジューラー・インスタンスを使用するのかを明示して構成することができます。または、スケジューラー・インスタンスを明示しないで構成するという選択ができます。後者の場合、デフォルトのスケジューラー・インスタンスが使用されます。

削除したい自動作成の EJB タイマーを含むスケジューラー・インスタンスが、サーバーに対して現在構成されているスケジューラー・インスタンスと同じ場合、このパラメーターを省略することができます。この場合は、コマンドで構成を検査し、現在構成されているスケジューラー・インスタンスを検出し、そしてそれを使用します。

ただし、現在構成されているスケジューラー・インスタンスが、削除する EJB タイマーを含むスケジューラー・インスタンスではない 場合は、対象のタイマーを含むスケジューラー・インスタンスの JNDI 名を指定してください。(ストリング、オプション)

-nodeName
サーバーを含むノードの名前。(ストリング、必須)
-moduleName
削除したい自動作成の EJB タイマーを要求したモジュールの名前。タイマーがどのモジュールに定義されているかに関係なく、アプリケーション内の自動的に作成されたタイマーをすべて削除する場合は、このパラメーターは省略されます。このパラメーターは、アプリケーション内の 1 つのモジュールから要求された自動的に作成されたタイマーを削除する場合にのみ指定します。同じアプリケーション内の別のモジュールから要求されたタイマーの場合は指定しません。(ストリング、オプション)

戻り値: なし

次の情報は、このコマンドがいつ必要かを判別する場合に役立ちます。
  • WebSphere® Application Server は、以下の条件がすべて満たされた場合に、自動作成の EJB タイマーを削除しようとします。
    • 以下の処置のうちの 1 つが実行されます。
      • アプリケーションのアンインストール
      • アプリケーションの更新
      • モジュールのアンインストール
      • モジュールの更新
    • 処置が接続モード (wsadmin -conntype none ではない) で実行されました。
    • 必要なサーバーが処置時に稼働していました。
      • Network Deployment トポロジーの場合、デプロイメント・マネージャー、ノード・エージェント、および自動作成の EJB タイマーを含む管理対象サーバーが、すべて稼働していた。
      • ベース・トポロジーの場合、スタンドアロン・サーバーが稼働していました。
    • 正しいフォローアップ処置が実行されました。
      • Network Deployment トポロジーの場合、変更を保存し、その変更をノード・エージェントと同期させます。変更の保存で、同期を行っていない場合、自動作成 EJB タイマーは削除されません。 自動作成の EJB タイマーは、同期処理中にのみ削除されます。
      • ベース・トポロジーの場合、変更を保存します。
    • スケジューラー・インスタンスをサポートしているデータベースが実行中でした。
  • WebSphere Application Server は、以下の条件のうちいずれか が発生した場合に、自動作成の EJB タイマーを削除しません
    • アプリケーションまたはモジュールの、更新およびアンインストール以外の処置が行われます。
    • 処置 (アプリケーションやモジュールのアンインストールまたは更新の場合でも) が切断モードで行われました。
    • 必要なサーバーが稼働していませんでした。
      • Network Deployment トポロジーの場合、デプロイメント・マネージャー、ノード・エージェント、または管理対象サーバーが稼働していませんでした。
      • ベース・トポロジーの場合、スタンドアロン・サーバーが稼働していませんでした。
    • 正しいフォローアップ処置が実行されませんでした。
      • Network Deployment トポロジーの場合、保存または同期化のいずれかが行われませんでした。
      • ベース・トポロジーの場合、保存が行われませんでした。
    • スケジューラー・インスタンスをサポートしているデータベースが実行していませんでした。
自動作成の EJB タイマーをサーバーから削除しようとして WebSphere Application Server でエラーが発生する場合は、警告がログ・ファイルに書き込まれます。

エラーが発生する場合、アプリケーション・サーバーが自動作成の EJB タイマーを削除しようとしなかった場合、または、自動作成の EJB タイマーが削除されたかどうか確信がない場合は、手動で removeAutomaticEJBTimers コマンドを実行し、自動作成の EJB タイマーが削除されるようにします。自動的に作成されたタイマーが実際にスケジューラー・インスタンスから削除されていた場合、コマンドの実行は必要ありませんが、実行しても悪影響はありません。

クラスター環境で稼働し、ご使用のクラスターに複数のノードが含まれ、同じクラスター・レベルのスケジューラー・インスタンスにマップされたサーバーがそれらのノードにそれぞれ含まれている場合、自動的に作成されたタイマーはその複数サーバーのうちの 1 つから削除するだけで構いません。これは、共有スケジューラー・インスタンスが更新されると、その共有スケジューラー・インスタンスを使用しているすべてのサーバーは、その変更を認識するからです。

この結果、1 つのノード内のサーバーが稼働しておらず、自動タイマーをサーバーから削除できなかったというログ警告を受け取ったけれども、サーバーが、正常にクリアされた別のノード内のサーバーとクラスター・レベルのスケジューラー・インスタンスを共有していることが明らかな場合は、共有スケジューラー・インスタンスは既に更新されているため、ユーザー処置は必要ありません。

これは、1 つのクラスターに複数のサーバーがあり、それらがすべて同じノードの一部で、単一のクラスター・レベルのスケジューラー・インスタンスを共有し、それらのクラスター・メンバーの 1 つ以上が稼働していない場合にも当てはまります。この場合、アプリケーション・サーバーは、自動タイマーをそれらのサーバーから削除できなかったというログ警告を出します。 ただし、サーバーが共通のスケジューラー・インスタンスを共有していることが明らかで、クラスター・メンバーの 1 つが正常にクリアされた場合は、共有スケジューラー・インスタンスは既に更新されているため、ユーザー処置は必要ありません。

Network Deployment トポロジーで複数のサーバーが稼働する場合は、使用されているスケジューラーのタイプ (デフォルトとカスタム構成済み) によって、スケジューラーのクリーンアップに関するパフォーマンス上の影響があります。デフォルトの EJBContainer スケジューラーはサーバーごとに固有です。デフォルトの EJBContainer スケジューラー・インスタンスを使用していて、サーバーが 5 台の場合、5 つの固有のスケジューラー・インスタンスがあり、アプリケーションが更新または削除されると自動タイマーを 5 台のサーバーすべてから削除する必要があることを意味します。ただし、単一の共有カスタム構成済みスケジューラー・インスタンスを使用している場合は、自動タイマーを 1 つのスケジューラー・インスタンスから 1 度だけ削除してください。

例 1

トポロジー:

  • ワークステーション A で稼働中のデプロイメント・マネージャー。
  • ワークステーション B で稼働中の ノード・エージェント。このノードを Node01 と呼びます。
  • ワークステーション C で稼働中の管理対象サーバー server1。
  • ワークステーション D で稼働中の管理対象サーバー server2。
  • セキュリティーは使用可能になっています。
  • server2 は現在、タイマーが含まれる同じスケジューラー・インスタンスを使用するように構成されています。

背景:

testApp アプリケーションが管理コンソールから接続モードでアンインストールされました。どのモジュールから要求されているかに関係なく、アプリケーション内の自動的に作成されたタイマーをすべて削除しようと考えています。

デプロイメント・マネージャー、ノード・エージェント、および server1 サーバーが稼働中で、自動 EJB タイマーは server1 から削除されました。しかし、server2 は稼働していなかったため、自動 EJB タイマーは server2 から削除されませんでした。

ここで、自動 EJB タイマーを server2 から手動で削除する必要があります。

アクション:
  • Jacl を使用する場合、デプロイメント・マネージャーに接続された wsadmin セッションから、以下のコード行を入力します。
    $AdminTask removeAutomaticEJBTimers "-appName testApp -serverName server2 -nodeName Node01"
  • Jython を使用する場合、デプロイメント・マネージャーに接続された wsadmin セッションから、以下のコード行を入力します。
    AdminTask.removeAutomaticEJBTimers('-appName testApp -serverName server2 -nodeName Node01')

例 2

トポロジー:

  • ワークステーション A で稼働中のスタンドアロン server1。このノードを Node01 と呼びます。
  • 管理セキュリティーが使用不可になっている。
  • server1 は、自動 EJB タイマーが作成されたときに、スケジューラー・インスタンス jndi/sched_1 を使用するように構成されました。しかし、server1 は、現在、スケジューラー・インスタンス jndi/sched_2 を使用するように構成されています。

背景:

アプリケーション testApp のモジュール mod1 はアンインストールされましたが、server1 はアンインストール時には jndi/sched_2 インスタンスを使用するように構成されていたため、自動 EJB タイマーはスケジューラー・インスタンス jndi/sched_1 から削除されませんでした。

ここで、自動 EJB タイマーを server1 上の jndi/sched_1 スケジューラー・インスタンスから手動で削除する必要があります。

アプリケーションには、モジュール mod1 および mod2 が含まれています。これらのモジュールは、両方とも、自動作成の EJB タイマーを要求しました。mod2 モジュールは、まだインストールされているので、このモジュールが要求した自動作成の EJB タイマーは、引き続き必要です。mod1 によって要求された自動作成の EJB タイマーのみを削除しようと考えています。

アクション:
  • Jacl を使用する場合、スタンドアロン・サーバー内の接続された wsadmin セッションから、以下のコード行を入力します。
    $AdminTask removeAutomaticEJBTimers "-appName testApp -moduleName mod1 -serverName server1 -nodeName Node01 -schedulerJNDIName jndi/sched_1"
  • Jython を使用する場合、スタンドアロン・サーバー内の接続された wsadmin セッションから、以下のコード行を入力します。
    AdminTask.removeAutomaticEJBTimers('-appName testApp -moduleName mod1 -serverName server1 -nodeName Node01 -schedulerJNDIName jndi/sched_1')

トピックのタイプを示すアイコン 参照トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rxml_configuringEJBTimerWorkManager
ファイル名:rxml_configuringEJBTimerWorkManager.html