2008年12月18日木曜日

1つのJVMで異なるライブラリを使用する環境を使う

JBOSSのアプリケーション内から、GlassFishのクライアントコンテナを使用するようなこと。
J2EE関連のライブラリ(JAR)などが競合しそうで、そのままでは使用できそうもない。

アイデア1) GlassFish環境でRMIサーバを立ち上げてRMIベースで連携
そもそも、GlassFishを使用するのはEJBを使うためなので、
RMI->EJB では、ごてごてしすぎだしパフォーマンスも悪くなる
EJB(RMI/IIOP)は単なる接続だけなら製品間のInteroperabilityがあるようだが、
  LoadBalanceやFailOverがからむと、専用のクライアントコンテナが必要になったりする

アイデア2) JavaModeleSystemを使用する:まだドラフト状態

アイデア3)OSGi を利用する:バンドル毎に異なるライブラリを定義できる
 JBOssなどのAppContainerから使用できるかが問題(要調査)

用語:
・Java Module System : 使用するライブラリの集合をモジュールとして定義できる
JSR 277  JAM形式のファイルにパッケージしてモジュールを分離
       リポジトリを持ち、動作時に使用するものを判断してロード
 RubyGemやPerlCPAMに似たしくみ

・OSGi Open Services Gateway initiative
JSR 291: Dynamic Component Support for Java SE
  バンドル毎に異なるライブラリを指定してインストールを動的に行える
  現状ではMinifestベース
 使用している製品 Apache Felix、Knopflerfish、Eclipse Equinox

0 件のコメント: