2011-07-22 17 views
0

いくつかのデータを前後に転送するために2つのリモートJavaプロセス間の通常の通信にJMXを使用できますか? もしそうなら、なぜ上記のシナリオでRMIよりもJMXが好まれますか?2つのリモートJavaプロセス間の通常の通信にJMXを使用できますか?

ドキュメンテーションによると、JMXは管理/監視用であり、巨大なオブジェクトコレクションを呼び出して返すために使用できますか?

答えて

0

JMXはRMIほど便利ではないため、 RMIでは、インターフェイス経由でリモートオブジェクトを扱うことができるので、ローカルオブジェクトを扱うようなものです。 しかし、JMXでは、署名付きの文字列名でメソッドを呼び出す必要があります。

+2

JMX *は、通常のRMI呼び出しと非常によく似たプロキシオブジェクトを介して使用することもできますが(その場合は両面にMBeanインタフェースが必要です)場合。 –

+0

ああ、大丈夫、そのことを知らなかった –

+0

あなたのフィードバックに感謝します! – a85

2

もちろん、JMX形式のプレーンなコミュニケーションを使用できます。オープンMBeanに制限しても、各サイドに特別なタイプの情報(つまり、デシリアライズに使用されるカスタムjars)は必要ありません。

また、JMX通信の利点は、RMIからプロトコルスタックを簡単に切り替えることができることです。例えば。 JolokiaのようなJMX HTTP-Bridgeを追加または置き換えて使用することができます(ファイアウォールの使いやすさ、バルク要求、タイプレス通信)

平易な通信プロトコルとして使用されるJMXの欠点は、 MBeanはのいずれかのレイヤ(プレゼンテーション、サービス、DAO、...)に登録できるので、おそらく、JSR-160を使用してサービスレイヤーをリモートからエクスポートするだけであれば、アーキテクチャ上の観点からは望ましくないかもしれないあらゆるレイヤーに登録されているすべてのMBeanにアクセスできます。

関連する問題