2010-12-06 5 views
5

Webアプリケーションのクラスタに属するすべてのノードを見つける方法はありますか?私はJBossで知っているHAServiceMBeanSupportを使ってすべてのノード(ホスト名、IPアドレス)に関する情報を取得できますが、Tomcat、WebSpere、Glassfish、Oracle AS、Jetty、WebLogicで同様の方法をどのように実現できますか? (ベストは、それらのすべてに対応するインターフェイスになります)J2EEアプリケーションクラスタ内のすべてのノードをプログラムで検索/一覧表示する方法

答えて

0

私の知る限り、これはアプリケーションサーバーの機能によって異なります。

これを行うための標準的な方法はありません。

あなたは次のことを試すことができます。

クラスServletContextListenerは二つの方法があります。 createメソッド内でホスト名とIPアドレスを計算し、destroyメソッドでノードを削除することができます。

この方法では、VMクラッシュ時に問題が発生します。たとえば、destroy-methodは呼び出されません。

EDIT: ソフトウェアにはデータベースが必要ですか?その場合は、すべてのクラスタノードで同じデータベースインスタンスを使用する必要があります。あなたのアプリがクラスタなしでデプロイされている場合は、「プライベート」データベースを使用します。あなたは、共有DBが必要になります。

表:ノード


HOST | IP


as1.cluster | < ip>

as2.cluster | < ip2>

そのDBに1行しか挿入されていない場合、クラスタはありません。

ノードがクラッシュし、このテーブルからエントリを削除しない場合、このテーブルは壊れている可能性があります。

+0

hmmしかし、アプリケーションがどのようにクラスタ内にあることを検出できますか?クラスタ内で動作しない2台のマシンにアプリケーションをデプロイしたと仮定します。とにかく私はこのためのアプリケーションサーバーの特定の解決策を見つけることに問題があります... –

+0

彼らがクラスタで実行する場合、(データベースが使用される場合)同じデータベースを共有する必要があります。それらが異なるクラスタまたは単一のApplication Serverとして動作する場合は、異なるデータベースを使用する必要があります。 EJB 3.1(?)を使用できる場合は、Clusterwide Singleton Beanがあります。 –

+0

問題は、アプリケーションをクラスタにデプロイすることができますが、それをする必要はありません。現在のところ、アプリケーションアーカイブの構築時に、アプリケーションが実行されているときにクラスタ化されているかどうかを検出しようとする理由がわかりません。それが不可能な場合は、クラスタ化されたアプリケーションのために別のconfig/setupを作成する必要があります(実際には、顧客の設定がより必要になります)。 –

関連する問題