3.2.5. HornetQ の変更
3.2.5.1. 既存の JMS メッセージを Enterprise Application Platform 6 へ移行するため JMS ブリッジを設定する
JBoss Enterprise Application Platform 6 ではデフォルトの JMS 実装が JBoss Messaging から HornetQ に変更になりました。JMS ブリッジを使用すると、最も簡単に JMS メッセージを 1 つの環境から別の環境に移行することができます。現在、JBoss Enterprise Application Platform 6 には JMS ブリッジが含まれていませんが、JMS ブリッジを JBoss Enterprise Application Platform 5.x にデプロイしてメッセージを Enterprise Application Platform 6 に移動することが可能です。リリース間のクラスの競合を避けるため、次の方法を用いて JMS ブリッジを設定する必要があります。SAR ディレクトリとブリッジの名前は任意で、好きな名前に変更できます。
手順3.19 JMS ブリッジの設定
- 次の例に従って、SAR が含まれるように Enterprise Application Platform 5 の deploy ディレクトリにサブディレクトリを作成します。
EAP5_HOME/server/PROFILE_NAME/deploy/myBridge.sar
EAP5_HOME/server/PROFILE_NAME/deploy/myBridge.sar/
にMETA-INF
という名前のサブディレクトリを作成します。- 以下と似た情報が含まれる
jboss-service.xml
ファイルをEAP5_HOME/server/PROFILE_NAME/deploy/myBridge.sar/META-INF/
ディレクトリに作成します。<server> <loader-repository> com.example:archive=unique-archive-name <loader-repository-config>java2ParentDelegation=false</loader-repository-config> </loader-repository> <!-- Enterprise Application Platform 6 JMS Provider --> <mbean code="org.jboss.jms.jndi.JMSProviderLoader" name="jboss.messaging:service=JMSProviderLoader,name=EnterpriseApplicationPlatform6JMSProvider"> <attribute name="ProviderName">EnterpriseApplicationPlatform6JMSProvider</attribute> <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute> <attribute name="FactoryRef">jms/RemoteConnectionFactory</attribute> <attribute name="QueueFactoryRef">jms/RemoteConnectionFactory</attribute> <attribute name="TopicFactoryRef">jms/RemoteConnectionFactory</attribute> <attribute name="Properties"> java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory java.naming.provider.url=remote://EnterpriseApplicationPlatform6host:4447 java.naming.security.principal=jbossuser java.naming.security.credentials=jbosspass </attribute> </mbean> <mbean code="org.jboss.jms.server.bridge.BridgeService" name="jboss.jms:service=Bridge,name=MyBridgeName" xmbean-dd="xmdesc/Bridge-xmbean.xml"> <depends optional-attribute-name="SourceProviderLoader">jboss.messaging:service=JMSProviderLoader,name=JMSProvider</depends> <depends optional-attribute-name="TargetProviderLoader">jboss.messaging:service=JMSProviderLoader,name=EnterpriseApplicationPlatform6JMSProvider</depends> <attribute name="SourceDestinationLookup">/queue/A</attribute> <attribute name="TargetDestinationLookup">jms/queue/test</attribute> <attribute name="QualityOfServiceMode">1</attribute> <attribute name="MaxBatchSize">1</attribute> <attribute name="MaxBatchTime">-1</attribute> <attribute name="FailureRetryInterval">60000</attribute> <attribute name="MaxRetries">-1</attribute> <attribute name="AddMessageIDInHeader">false</attribute> <attribute name="TargetUsername">jbossuser</attribute> <attribute name="TargetPassword">jbosspass</attribute> </mbean> </server>
注記
<load-repository>
は SAR に分離されたクラスローダーが確実に存在するようにします。JNDI ルックアップとブリッジの「ターゲット」の両方に、パスワードが 「jbosspass」であるユーザー 「jbossuser」のセキュリティー認証情報が含まれていることに注意してください。これは、JBoss Enterprise Application Platform 6 はデフォルトで保護されているからです。パスワードが 「jbosspass」であるユーザー「jbossuser」はguest
ロールを持ち、EAP_HOME/bin/add_user.sh
スクリプトを使用してApplicationRealm
に作成されました。 - 次の JAR を
EAP_HOME/modules/
ディレクトリからEAP5_HOME/server/PROFILE_NAME/deploy/myBridge.sar/
ディレクトリへコピーします。 VERSION_NUMBER を JBoss Enterprise Application Platform 6 ディストリビューションの実際のバージョン番号に置き換えてください。org/hornetq/main/hornetq-core-VERSION_NUMBER.jar
org/hornetq/main/hornetq-jms-VERSION_NUMBER.jar
org/jboss/ejb-client/main/jboss-ejb-client-VERSION_NUMBER.jar
org/jboss/logging/main/jboss-logging-VERSION_NUMBER.jar
org/jboss/logmanager/main/jboss-logmanager-VERSION_NUMBER.jar
org/jboss/marshalling/main/jboss-marshalling-VERSION_NUMBER.jar
org/jboss/marshalling/river/main/jboss-marshalling-river-VERSION_NUMBER.jar
org/jboss/remote-naming/main/jboss-remote-naming-VERSION_NUMBER.jar
org/jboss/remoting3/main/jboss-remoting-VERSION_NUMBER.jar
org/jboss/sasl/main/jboss-sasl-VERSION_NUMBER.jar
org/jboss/netty/main/netty-VERSION_NUMBER.jar
org/jboss/remoting3/remote-jmx/main/remoting-jmx-VERSION_NUMBER.jar
org/jboss/xnio/main/xnio-api-VERSION_NUMBER.jar
org/jboss/xnio/nio/main.xnio-nio-VERSION_NUMBER.jar
注記
javax API クラスは Enterprise Application Platform 5.x のクラスと競合するため、単にそのままEAP_HOME/bin/client/jboss-client.jar
をコピーしないようにしてください。