第32章 後方互換性と前方互換性
JBoss EAP は JBoss EAP 6 のように HornetQ をメッセージングブローカーとして使用していた古いバージョンの JBoss EAP との後方互換性および前方互換性をサポートしています。この 2 つの互換性モードは、HornetQ のコアプロトコルをサポートする、JBoss EAP の組み込みメッセージングサーバーの ActiveMQ Artemis によって提供されます。
32.1. 前方互換性
前方互換性では、レガシー JBoss EAP 6 の JMS クライアントへのコード変更は必要ありません。サポートは JBoss EAP messaging-activemq
サブシステムおよびそのリソースによって提供されます。前方互換性のサポートを有効にするには、JBoss EAP 7 サーバーの設定に以下の変更を行います。手順ごとに、スタンドアロンサーバーの管理 CLI コマンドの例を示します。
リモートレガシークライアントのポート 4447 でリッスンする
socket-binding
を作成します。/socket-binding-group=standard-sockets/socket-binding=legacy-remoting:add(port=4447)
前の手順で作成した
socket-binding
を使用するレガシーremote-connector
を作成します。これは JNDI ルックアップに必要です。/subsystem=remoting/connector=legacy-remoting-connector:add(socket-binding=legacy-remoting)
ポート 5445 でリッスンするレガシーメッセージング
socket-binding
を設定します。/socket-binding-group=standard-sockets/socket-binding=legacy-messaging:add(port=5445)
前の手順のバインディングを使用する
messaging-activemq
サブシステムにremote-connector
とremote-acceptor
を設定します。/subsystem=messaging-activemq/server=default/remote-connector=legacy-messaging-connector:add(socket-binding=legacy-messaging) /subsystem=messaging-activemq/server=default/remote-acceptor=legacy-messaging-acceptor:add(socket-binding=legacy-messaging)
messaging-activemq
サブシステムのlegacy-connection-factory
要素にレガシー HornetQ JMS ConnectionFactory を作成します。/subsystem=messaging-activemq/server=default/legacy-connection-factory=legacy-discovery:add(entries=[java:jboss/exported/jms/LegacyRemoteConnectionFactory], connectors=[legacy-messaging-connector])
レガシー HornetQ JMS 宛先を作成し、
legacy-entries
属性をjms-queue
またはjms-topic
リソースに含めます。jms-queue add --queue-address=myQueue --entries=[java:jboss/exported/jms/myQueue-new] --legacy-entries=[java:jboss/exported/jms/myQueue] jms-topic add --topic-address=myTopic --entries=[java:jboss/exported/jms/myTopic-new] --legacy-entries=[java:jboss/exported/jms/myTopic]
以下の例に従って、既存のキューまたはトピックに
legacy-entries
を追加できます。/subsystem=messaging-activemq/server=default/jms-queue=myQueue:write-attribute(name=legacy-entries,value=[java:jboss/exported/jms/myQueue])
entries
属性が JBoss EAP メッセージング JMS クライアントによって使用されるのに対して、legacy-entries
はレガシー HornetQ JMS クライアントによって使用されます。レガシー JMS クライアントは、このレガシー JMS リソースを検索し、JBoss EAP 7 と通信します。注記レガシー JMS クライアントでのコード変更を回避するには、
messaging-activemq
サブシステムに設定されたレガシー JNDI エントリーが、レガシー JMS クライアントによって想定されるルックアップと一致する必要があります。
管理 CLI の移行操作
管理 CLI の migrate
操作を実行して messaging
サブシステム設定を更新する場合、ブール値の引数 add-legacy-entries
が true
に設定されていると、messaging-activemq
サブシステムは legacy-connection-factory
リソースを作成し、legacy-entries
を jms-queue
および jms-topic
リソースに追加します。移行された messaging-activemq
サブシステムのレガシーエントリーは、レガシー messaging
サブシステムに指定されたエントリーに対応し、通常のエントリーは -new
接尾辞を付加して作成されます。
migrate
操作の実行時にブール値の引数 add-legacy-entries
が false
に設定されていると、messaging-activemq
サブシステムにはレガシーリソースが作成されず、レガシー JMS クライアントは JBoss EAP 7 サーバーと通信できません。