ページの先頭行へ戻る
Interstage Application Server V12.0.0 Java EE 7 設計・構築・運用ガイド
FUJITSU Software

13.2.11 JMSについて

メッセージング処理基盤

J2EE機能の場合

通信層などメッセージング処理の基盤部分にイベントサービスのノーティフィケーションサービスを利用します。
JMSクライアントからのメッセージ送受信要求を受けるとノーティフィケーションサービスのイベントチャネルに対してメッセージの送受信を行います。
メッセージング基盤にノーティフィケーションサービスを使用しているため、ノーティフィケーションサービスを介したCORBAアプリケーションとの連携が可能となります。


Java EE 7機能の場合

通信層などメッセージング処理の基盤部分にメッセージブローカ独自の機能を利用します。
JMSクライアントからのメッセージ送受信要求を受けるとメッセージブローカの物理格納先に対してメッセージの送受信を行います。
メッセージング基盤にメッセージブローカ独自の機能を使用しているため、J2EE機能のJMSで可能であったノーティフィケーションサービスを介したCORBAアプリケーションとの連携ができません。


メッセージの不揮発化機能

J2EE機能の場合

メッセージの不揮発化機能を使用する場合、メッセージの保存先(ユニット)を作成後、不揮発メッセージ専用のイベントチャネルを作成する必要があります。
不揮発メッセージ専用のイベントチャネルでは、揮発メッセージを蓄積することができません。揮発メッセージと不揮発メッセージを混在させてメッセージを送信する場合は、不揮発メッセージ用と揮発メッセージ用のイベントチャネルを作成する必要があります。


Java EE 7機能の場合

単一の物理格納先に揮発メッセージと不揮発メッセージを混在させて蓄積することができます。


メッセージの有効期間

J2EE機能の場合

メッセージの有効期間までにメッセージコンシューマへ配信されていないメッセージは、すべて破棄されます。


Java EE 7機能の場合

メッセージコンシューマがメッセージブローカに接続した時点で、メッセージコンシューマに配信可能なメッセージを配信します。
メッセージコンシューマに配信されたメッセージで、まだ受信処理が行われていないメッセージは、有効期間を超過しても破棄されません。当該メッセージは、アプリケーションの受信処理が行われる際に破棄されます。
メッセージブローカに接続した時点で配信されるメッセージの数は、メッセージブローカまたは物理格納先のconsumerFlowLimitプロパティで変更できます。


トランザクション種別

J2EE機能の場合

クライアントとトランザクション種別の組み合わせは、以下となります。

クライアント種別

Servlet/JSP
アプリケーション

EJBアプリケーション

J2EEアプリケーションクライアント

Java SEスタンドアロンアプリケーション

トランザクション種別

JTSを使用したトランザクション管理機能

JMSのローカルトランザクション機能

○:初期設定で使用可能
△:グローバルトランザクション機能を使用するConnectionFactory定義を作成した場合に使用可能


Java EE 7機能の場合

クライアントとトランザクション種別の組み合わせは、以下となります。

クライアント種別

Servlet/JSP
アプリケーション

EJBアプリケーション

アプリケーションクライアントコンテナ

Java SE スタンドアロンアプリケーション

トランザクション種別

JTAを使用したトランザクション管理機能

リソースマネージャが提供するトランザクション管理機能

○:使用可能
-:使用不可


上記の表に記載されているJava EE 7機能の用語は、以下のように読み替えてください。

Java EE 7機能の用語

読み替える用語

JTAを使用したトランザクション管理機能

JTSを使用したトランザクション管理機能

リソースマネージャが提供するトランザクション管理機能

JMSのローカルトランザクション機能

アプリケーションクライアントコンテナ

J2EEアプリケーションクライアント


トランザクション運用時のメッセージの欠落

J2EE機能の場合

メッセージ蓄積可能なデータ数の上限値を超過してメッセージを送信した場合、トランザクションのcommit時にクライアントへエラーが通知されます。


Java EE 7機能の場合

メッセージ蓄積可能なデータ数の上限値を超過してメッセージを送信した場合、JMS-APIのsendメソッド実行時にクライアントへエラーが通知されます。


トランザクション運用時のメッセージの有効期間

J2EE機能の場合

メッセージの有効期間監視は、トランザクションのcommit後に開始されます。


Java EE 7機能の場合

メッセージの有効期間監視は、JMS-APIのsendメソッドの実施後に開始されます。


Webコンテナ/EJBコンテナで使用できるJMS API

Webコンテナ/EJBコンテナで使用できるJMS APIは、J2EE機能とJava EE 7機能で以下のように違います。

インタフェース名/クラス名

メソッド

J2EE機能

Java EE 7機能

javax.jms.Connection

setExceptionListener() (注1)

×

stop()

×

javax.jms.QueueConnection

createConnectionConsumer()

×

javax.jms.Session

run()

×

javax.jms.TopicConnection

createConnectionConsumer()

×

createDurableConnectionConsumer()

×

○:使用可能
-:使用不可

注1) Java EE 7機能で使用できないため、Webコンテナ/EJBコンテナでは、Message Listenerの使用は推奨されていません。Message-driven Beanを使用してください。