[doc] [toc] [previous] [next]

概要

JMSとは何か?

JMS (Java Messaging Systemの短縮形)は、数年前にSunによって開発されたメッセージ指向ミドルウェア(MOM) APIです。この努力の背後にある主な動機は、メッセージ指向アプリケーションプログラミングのための統合したJava APIを作り上げて、ベンダー固有のAPIの使用を強制されることを避けるということでした。 プログラマはAPIに対してプログラムをおこないますが、実行時にはJMSプロバイダと呼ばれるベンダ固有のJMS実装を必要とします。いくつかの種類のJMSプロバイダが存在します。 JBossで使われているものはJBossMQと呼ばれています。

プロジェクトが次の一部(あるいは全部)を要求するなら、JMSは手軽に使える手段となります。

  • システム間の分離

  • 非同期的振る舞い

  • 一対多, 多対多、または多対一セマンティクス

  • 保証された配信

JMSとJ2EE

JMSは、エンタープライズJava Beans(EJB)やJava 2 Enterprise Edition (J2EE)フレームワークが開発されるより前に開発されました。したがって、JMS仕様書がEJBやJ2EEに言及していなくとも驚くには及びません。

第一世代のEJBやJ2EE仕様書ではいずれもJMSに触れていません。EJBバージョン1.1まで(1.1を含む)は、JMSはコンテナプロバイダがBeanに提供するAPIとして要求されてはいませんでした。J2EE 1.2では、JMSインタフェースが利用できなければならないと言っているものの、JMSプロバイダを含むことは要求しないとも言っていました。 その結果として、JMSコードを実際に使うことができるという保証はありませんでした。

このような状況はEJB 2.0とJ2EE 1.3で変りました。J2EE 1.3準拠のアプリケーションサーバは、JMSプロバイダを含まなければなりません。J2EE 1.3もEJB 2.0を要求しているので、さらに二つのJMS機能も追加されました。

  • 新しいタイプのBeanが定義されました。メッセージ駆動型Bean(Message Driven Bean, MDB)と呼ばれる、この種類のBeanは、JMSサブスクライバのように振る舞うことで、EJBに非同期呼び出しを導入しました。

  • リソースとしてのJMSの扱い。一貫性を保つため、BeanからのJMSパブリッシュ(送信のこと)は、Beanのグローバルトランザクション環境に参加できる必要があります。このことは、JMSをJDBC接続のようなコンテナ管理によるリソースとみなすことを要求します。このシナリオでは、JMSセッションのトランザクションはコンテナによって管理され、そのセッションは同じメソッドからアクセスされる他のトランザクションリソースと同様に扱われます。

JMSとJBoss

JBossはバージョン2.0からずっとJMSをサポートし続けていました。 メッセージ駆動型Beanのサポートはバージョン2.1に追加されました。 そしてトランザクション管理のリソースとしてのJMSは、バージョン2.4から利用可能になっています。

JBossのJMSアーキテクチャは次の要素を含みます。

  • JMSプロバイダ。JBossMQと呼ばれるこれは、JMS 1.0.2仕様書を実装するJBossの一部で、第8章のアプリケーションサービスファシリティ(ASF)のように、オプション扱いの部分を含みます。JBossMQは、キューやトピックの作成、永続性、パフォーマンスという通常のJMSで処理できなければならないすべてを扱います。

    JBossMQは2000年の春にNorbert Latailleによって作られました。Hiram Chirino氏らは2000年の後半にそれを引き継いて、ASFとXAサポート(やその他)を付加しました。Paul Kendall氏とDavid Maplesden氏は最近の貢献者(contributer)です。

    JBossMAは、それ自身のCVSモジュールとそれ自身のメーリングリストspyderMQを持っています。そこでは、中心となるJBossMQプログラマが、きままに話し合っています。

  • メッセージ駆動型Bean。それはJBossのEJBコンテナシステムの中核の一部で、仕様書に完全に準拠しています。Peter Antman氏が主にこれを書きましたが、Hiram Chirino氏およびJason Dillon氏(とその他の有志)も多大な貢献をしました。

  • リソースアダプタ。JBoss 2.4では、Peter Antman氏がJ2EEコネクタとしてJMSアーキテクチャ用のリソースアダプタを追加しました。それはJBossにおいてEJBから非同期でないJMSタスクを実行するのに使われることを意味します。

[doc] [toc] [previous] [next]

Copyright © 2000 2001 JBoss Organization
Copyright © 2001 2002 日本語訳: Neverbird Project