MXBeanがあるじゃないか

C#フレームワークを移行する際に悩んでいることとして、以前に書いたことのうち

  • クライアントデータ(オブジェクト)の共有

というのがあった。
これは.NET C#では.NET Remoting上に配置した生存期間無限のサーバアクティベーション オブジェクト(SAO)(内部はデータベーステーブルのキャッシュ)で実現しており、他の全てのアプリケーションから一つのオブジェクトとして透過に見えるという性質上、Javaの場合はRMIで実装するしか無いと思っていた。
RMIはスタブのコンパイルこそ必要無くなったが(偉大な進歩だ)、それでもいちいちオブジェクトの名前解決のためのサーバを起動しておかなくてはならないという制約が面倒で嫌だなと思っていたのだが、最新のMBeanそれもクラスファイルを共有する必要が無いMXBeanの最新の仕様ではRMIのようにそれ用のサーバを起動する必要すらなくなったというではないか。

JMX API の拡張 Java SE6

本来はサーバオブジェクトの監視等、外部からJVMを制御するのに使用されることが多いが、

  • データベースに接続して任意のテーブルからデータを取得
  • 取得したデータをオブジェクトキャッシュ(リストやマップ型)として公開
  • 一定期間でキャッシュの破棄、作り直しを実行

これらの機能を持たせたMXBeanをエクスポートして、他のアプリケーションから接続することで.NET RemotingのSAOと同様に透過に見えるオブジェクトを実現できるのではないだろうか。

などと妄想中。