5

EJB が改善されたかどうかを確認するために、Spring Quartz ベースのアプリケーションを EJB 3.1 に移植することを考えています。スケジュール タイマー サービスでフェールオーバーがどのように機能するか理解できません。Quartz には、クラスタ化された Quartz インスタンスが使用するデータベース テーブルがあります。クラスター内の 1 つのノードがクラッシュした場合でも、ジョブは他のノードで実行されます。

タイマー サービスがどのように永続化するかを調べたところ、タイマーが作成されたサーバーのファイル システムを使用しているようです。これは本当ですか?フェイルオーバーをサポートしないため、Timer Service が使用できなくなるため、これがどのように可能になるかわかりません。

だから私は何かが欠けているに違いない。誰でもこれで私を助けることができますか?

4

2 に答える 2

2

EJB タイマー サービスは、Quartz (Spring の有無にかかわらず) ほど高度ではありません。

EJB タイマーは不明な場所に永続化されます。たまたまファイルシステムである可能性がありますが、たまたまWindowsで実行している場合はWindowsレジストリである可能性もあり、LDAPサーバーなどである可能性もあります.

これについてしばらくの間、EJB 仕様の JIRA で問題が発生し、仕様のメーリング リストで議論されましたが、その後、誰も返信しようとしなかったため (おそらく多くの人が休暇中であったため)、容赦なく削除され、閉じられました。当時の)。私に尋ねられた場合、それは問題をクローズする最も不十分な理由の 1 つですが、仕様リーダーはそのような手段に頼らなければならない場合があると思います。

とにかく、JBoss AS では、ファイルシステムに書き込みを行う埋め込みリレーショナル データソースに対して永続化が行われます。独自の構成を介して、このデータソースを任意のリモート DB に向けることができます。フェイルオーバーは、専用の JBoss 機能からも提供される必要があります。EJB は潜在的なクラスタリングのために多くのことを禁止していますが、仕様には明示的なクラスタリング サポートがないため、特に EJB タイマーはクラスタに対応していません。

于 2012-10-17T14:07:38.363 に答える
0

質問の時点でこれが利用可能かどうかはわかりませんが、これには「cluster-ha-singleton」を使用できます。これにより、単一のクラスター ノードから呼び出されるシングルトン タイマーを作成できます。選択されたノード シングルトン (したがってタイマー) を実行するために新しいノードが選択されます

http://www.jboss.org/quickstarts/eap/cluster-ha-singleton/

EAP について言及していますが、私は AS 7.2.0 で問題なく実行しています。jar は既に /modules/org/jboss/ に含まれています。

于 2015-03-17T08:41:30.430 に答える