[製品紹介]

オープンソースEJBサーバのデファクトを目指す
JBoss 3

 JBossの機能

 JBossは、J2EE 1.3の機能を備える本格的アプリケーションサーバである。次のような機能をもつ。

  • Servlet 2.3, Java Server Pages(JSP) 1.2
  • Enterprise JavaBeans(EJB) 2.0
  • Java Management Extensions(JMX)
  • Java Naming and Directory Interface(JNDI)
  • Java Messaging Service(JMS) 1.1
  • Java Transaction API(JTA), Java Transaction Service(JTS)
  • J2EE Connector Architecture(JCA)
  • Java Authentication and Authorization Service(JAAS)
  • IIOP/Webサービス
  • HSQLDBデータベース

 Webコンテナをバンドルしているので、JBossだけでWebアプリケーションを実行できる。バンドルされたWebコンテナにはTomcatとJettyとの2種類があり、別々のJBossのアーカイブとなっている。機能に差はないので、JBossをダウンロードする際に好きな方を取得すればよい。例えば、jboss-3.2.1.zipはJettyをバンドルしたものであり、一方、jboss-3.2.1_tomcat-4.1.24.zipはTomcatをバンドルしたものである。Tomcatを使い慣れたユーザーはTomcat版の方を利用するとよいだろう。

 JBoss 3.2.2からはWebコンテナの事情が多少異なるので注意が必要だ。現在、JBoss 3.2.2RC4(ベータ版)が公開されているが、jboss-3.2.2RC4.zipがTomcatをバンドルしたものであり、jboss-3.2.2RC4_jetty-4.2.11.zipがJettyをバンドルしたものである。つまり、JBoss内でのTomcatとJettyの位置づけが逆になっている。

 EJBコンテナは、CMP(Container Managed Persistence)2.0に対応している。これは、CMR(Container Managed Relationship)やEJB-QL(EJB Query Language)を含むものであるので、さまざまなEJBを実行できる。

 また、HSQLDBというJavaで書かれた軽量データベースを含むのも面白い点だ。デフォルトの設定でこのデータベースを使うようになっているので、何かちょっとテストするときに便利である。もちろん、JDBCドライバを使ってほかのデータベースを使うこともできる。

 使いやすいアプリケーションサーバ

 JBossのインストールは簡単だ。アーカイブを展開すればインストールは完了する。サーバの起動は、展開された起動スクリプトを実行するだけでよい。上述したように、Webコンテナやデータベースもデフォルトで組み込まれているので、このままでもJ2EEアプリケーションを実行することができる。

 さらに、ホットデプロイ機能により、アプリケーションのデプロイも容易だ。JBossの起動後であっても、deployディレクトリにアーカイブ(EJB-JARやWAR、EAR)をコピー(もしくは展開してコピー)すれば、それらモジュールが読み込まれる。JBossを再起動する必要はない。これがホットデプロイと呼ばれる機能である。逆に、ファイルを削除すればアンデプロイとなる。ファイルを上書きすれば、アンデプロイ、デプロイが順番に実行される。ホットデプロイは、アプリケーション開発時に重宝する機能だ。

 マイクロカーネルアーキテクチャ

 JBossのアーキテクチャは、マイクロカーネルと呼ばれる先進的なものになっている。これはJBossの最大の特徴であり、先ほどのホットデプロイが可能なのもこのアーキテクチャのおかげである。

 マイクロカーネルはJMX(Java Management Extensions)をベースとする。JMXはネットワーク上に分散した機器やソフトウェア(管理リソース)をリモートから監視するためのJavaの仕様である。すなわち、管理リソースをJMXクライアント(これはMBeanと呼ばれ、それぞれのサービスに対応する)にすれば、それをJMXサーバ(すなわちMBeanサーバ)に管理させることができ、管理リソースの状態(属性)をJMXという統一されたAPIで監視、操作することができる。

 管理するためのJMXとアプリケーションサーバとは関係がないように思われるが、管理というJMXの概念を大きく拡張させたのがJBossのマイクロカーネルアーキテクチャである。JMXでは、クライアントとサーバ間、また、クライアント間で疎な連携が実現される。この点に注目し、管理しやすくするだけのためでなく連携しやすくするために、クライアントをコンポーネント化する実装手段として、JBossはJMXをアーキテクチャの核として採用した。だから、JBossのマイクロカーネルの実体はMBeanサーバであり、1つ1つのサービスはMBeanコンポーネントになっている。

 このマイクロカーネルアーキテクチャにより、JBoss全体の構成は、小さなカーネル部分とアドオン可能なサービス部分とに分かれ、カーネルを再起動することなくサービスを動的に追加、削除できるようになっている。だから、JBossは、カスタマイズしやすく柔軟なアプリケーションサーバなのだ。

JMXベースの管理コンソール

 JBossでは、アプリケーションサーバが持つべきひとつひとつの機能がMBeanとしてラップされている。すなわち、WebコンテナもEJBコンテナもトランザクションマネージャもMBeanである。先ほどWebコンテナの説明で、TomcatやJettyがバンドルされていると書いたが、これは単にファイルが一緒に付いてくるという意味ではない。それぞれがWebコンテナというサービスとしてMBean化されているという意味だ。だから、Webコンテナの実装を容易に切り替えられる。

SAR(Service Archive)
JBossでは、このようなMBeanサービスをSAR(Service Archive)としてコンポーネント化できる。JBossには、J2EEのモジュール(JAR/EJB-JAR/WAR/EAR)以外にも、SARというモジュールがあることになる。

 また、自分でMBeanを実装してサービスを追加することもできる。JBossを土台に、既存のサービスをカスタマイズしたり、サービスを追加したりして、独自のアプリケーションサーバを仕立て上げることも可能だ。

「J2EE機能」という言葉について
JBossはJ2EEの機能を備えると書いてきたが、この書き方は厳密な意味では正しくない。JBossはJ2EE互換テストを通過していないからだ。そのため、J2EE“相当”の機能を有するというのが正しく(英語ではJ2EE basedという書き方となる)、ほかのJ2EE互換サーバとは動作の異なる点があるかもしれない。しかしこれには歴史的経緯があり、決してJBossが技術的に劣っているわけではない。

J2EEも含めたJavaの仕様は、現在、Java Community Process(JCP)というオープンな組織によって策定されている。しかし、J2EE互換というブランド(ロゴ)はSun Microsystemsが認定するものである。すなわち、Sun Microsystemsの“J2EE互換テストキット”を用いたテストに合格し、Sunにライセンス料を支払って初めてJ2EE互換を名乗ることができる。

JBossはオープンな開発がベースであり、そのような余力がJBGにはなかった。また、JBossのフリーなライセンスにはSun Microsystemsのものとは相入れない部分もあり、JBoss向けの措置をとるように迫るJBGとそれを拒むSunとの間で論争が続いていた――例えば、2002年3月20日のO'Reilly Networkでは、JBossのJ2EE互換認定をSun Microsystemsが妨害しているのではないかという話題が記事になったことがあり、Fleury氏がインタビューに答えている。

しかし、2003年8月1日のCRN Newsの報道によると、ついに両者が歩み寄り、J2EE互換認定を受ける作業がJBGによって進められるそうだ。技術的というよりはマーケティング的意義が大きいとFleury氏が述べているように、企業ユーザーがJBossを選択する際にJ2EE互換ブランドは重要な意味を持つだろう。

JBGがJCPのメンバーに
2003年9月23日のZDNet Newsが、JBGがJCPメンバーの一員になると報じた。いままでのJBossとJCPの関係はJBoss技術者の個人レベルのものであったが、これで正式にJBGとしてJCPにかかわることになる。当面JCacheとAOPの議論に加わるそうだ。

これは、JBGとSun Microsystemsとの関係が良好なものに変わりつつあることを示すものだろう。J2EE互換認定の作業も促進されることを期待したい。また、J2EEの議論にも直接参加できるようになることを願う。


 クラスタリング

 JBossはクラスタリング機能ももつので、本格的な運用もまかせられる。次のようなクラスタリング機能がある。

機能 内容
Auto discovery クラスタ内の各JBossノードは自動でお互いを認識しあう
Fail-over、load-balancing JNDI/RMI/Entity Bean/Stateful Session Bean/Stateless Session Beanに対するfail-overとload-balancing
HTTP Session replication HTTP Session情報を共有しあう
Dynamic JNDI discovery JNDIクライアントが自動でJNDI Initial Contextを探す
Cluster-wide replicated JNDI tree JNDI情報を共有する
Farming あるノードにモジュールをホットデプロイするだけでほかのノードにもデプロイできる

 クラスタリングの目的には2つある。負荷分散としての機能とダウンタイムを少なくするための多重化の機能だ。Stateful Session Beanの情報やHTTP Sessionの情報までも共有することができるので、JBossは実用に堪えるクラスタリングサーバとなっている。

2/3

 INDEX

JBOSS
 

Page1
JBossの提供企業「JBoss Group LLC」
JBossのサポートとコンサルティングを事業に
JBoss誕生の経緯

  Page2
JBossの機能
使いやすアプリケーションサーバ
マイクロカーネルアーキテクチャ
クラスタリング
  Page3
JBossの今後 〜 Beyond J2EE
J2EEの課題
AOPを取り入れたJBoss 4


Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間