2016-05-28 2 views
0

標準のJava EE 5アプリケーションを作成しており、MQ serverv8からJMSメッセージ(HornetQ)を使用する必要があります。 MQ管理者はMQ構成として.bindingsファイルを提供しています。 Webを検索した後、MDBで.bidingsファイルを使用する方法を見つけることができません。標準のアクティベーション仕様を使用して既に試しました。それはうまく動作します。しかし、そのためには、JMSプロパティーをJBOSSまたはEE固有の構成ファイルに入れる必要があります。誰かがMDBで.bindingsファイルを使用する方法を教えてください。JbossのMDBで.BINDINGファイルを使用するEAP6.4

jndiと初期コンテキストファクトリ名の決定方法は?

答えて

0

MDB起動仕様で.bindingsファイルを使用することは可能ですが、これは実用的ではないことが分かります。 .bindingsファイルとMDBアクティベーション仕様の両方で宛先を指定できますが、接続ファクトリは指定できません。接続ファクトリを構成する属性(すなわち、ホスト、ポート、チャネルなど)は、起動仕様で個別に設定されます。

できることは、.bindingsファイルを使用して、JMSメッセージングブリッジをMQからJBossに設定することです。その後、あなたのMDBはちょうどローカルのHornetQの宛先を聞きます。この作業を行うには、次のようにする必要があります。

1)IBM MQクライアントモジュールを作成します。メッセージングブリッジはIBM JCAを使用しません。 UNIX MQサーバーでは、/opt/mqm/java/lib/ディレクトリにクライアントjarがあります。

私は、次のjarファイルでモジュールを作成:

./system/layers/base/com/ibm/wmqclient75 
./system/layers/base/com/ibm/wmqclient75/main 
./system/layers/base/com/ibm/wmqclient75/main/com.ibm.mq.tools.ras.jar 
./system/layers/base/com/ibm/wmqclient75/main/com.ibm.mq.axis2.jar 
./system/layers/base/com/ibm/wmqclient75/main/com.ibm.mq.headers.jar 
./system/layers/base/com/ibm/wmqclient75/main/ldap.jar 
./system/layers/base/com/ibm/wmqclient75/main/CL3Nonexport.jar 
./system/layers/base/com/ibm/wmqclient75/main/providerutil.jar 
./system/layers/base/com/ibm/wmqclient75/main/connector.jar 
./system/layers/base/com/ibm/wmqclient75/main/jta.jar 
./system/layers/base/com/ibm/wmqclient75/main/com.ibm.mq.soap.jar    
./system/layers/base/com/ibm/wmqclient75/main/com.ibm.mq.jms.Nojndi.jar 
./system/layers/base/com/ibm/wmqclient75/main/com.ibm.mq.jar 
./system/layers/base/com/ibm/wmqclient75/main/com.ibm.mqjms.jar 
./system/layers/base/com/ibm/wmqclient75/main/rmm.jar 
./system/layers/base/com/ibm/wmqclient75/main/jms.jar 
./system/layers/base/com/ibm/wmqclient75/main/com.ibm.mq.commonservices.jar 
./system/layers/base/com/ibm/wmqclient75/main/fscontext.jar 
./system/layers/base/com/ibm/wmqclient75/main/com.ibm.mq.pcf.jar 
./system/layers/base/com/ibm/wmqclient75/main/CL3Export.jar 
./system/layers/base/com/ibm/wmqclient75/main/jndi.jar 
./system/layers/base/com/ibm/wmqclient75/main/com.ibm.mq.jmqi.jar 
./system/layers/base/com/ibm/wmqclient75/main/dhbcore.jar 
./system/layers/base/com/ibm/wmqclient75/main/module.xml 

マイmodule.xmlファイル:

<?xml version="1.0" encoding="UTF-8"?> 

<module xmlns="urn:jboss:module:1.0" name="com.ibm.wmqclient75"> 
<resources> 
<resource-root path="com.ibm.mq.commonservices.jar" /> 
<resource-root path="com.ibm.mq.headers.jar" /> 
<resource-root path="com.ibm.mq.jar" /> 
<resource-root path="com.ibm.mq.jmqi.jar" /> 
<resource-root path="com.ibm.mqjms.jar" /> 
<resource-root path="com.ibm.mq.pcf.jar" /> 

<resource-root path="connector.jar" /> 
<resource-root path="dhbcore.jar" /> 
<resource-root path="fscontext.jar"/> 
<resource-root path="providerutil.jar"/> 
</resources> 

<dependencies> 
    <!-- add the dependencies required by JMS Bridge code    --> 
    <module name="javax.api"/> 
    <module name="javax.resource.api"/> 
    <module name="javax.jms.api"/> 
    <module name="javax.transaction.api"/> 
    <module name="org.jboss.remote-naming"/> 
    <!-- we depend on org.hornetq module since we will send messages to --> 
    <!-- the HornetQ server embedded in the local AS7 instance   --> 
    <module name="org.hornetq"/> 
</dependencies> 
</module> 

2)あなたは、あなたのブリッジを設定ロードできます

<subsystem xmlns="urn:jboss:domain:messaging:1.4"> 
.... 
.... 
.... 
      <jms-bridge name="wmqBridge" module="com.ibm.wmqclient75"> 
      <target> 
       <connection-factory name="XAConnectionFactory"/> 
       <destination name="jms/queue/test"/> 
      </target> 
      <source> 
       <connection-factory name="mqCF"/> 
       <destination name="mqQueue"/> 
       <context> 
        <property key="java.naming.factory.initial" value="com.sun.jndi.fscontext.RefFSContextFactory"/> 
        <property key="java.naming.provider.url" value="file:///${jboss.server.data.dir}/bindings/"/> 
       </context> 
      </source> 
      <quality-of-service>ONCE_AND_ONLY_ONCE</quality-of-service> 
      <failure-retry-interval>500</failure-retry-interval> 
      <max-retries>1</max-retries> 
      <max-batch-size>1</max-batch-size> 
      <max-batch-time>1000000</max-batch-time> 
      <add-messageID-in-header>true</add-messageID-in-header> 
     </jms-bridge> 
    </subsystem> 

私は私のモジュールを参照してください:

<jms-bridge name="wmqBridge" module="com.ibm.wmqclient75"> 
先との接続ファクトリーのための

私の名前、.bindingsファイルで見つかったとして:

   <connection-factory name="mqCF"/> 
       <destination name="mqQueue"/> 

私はbindingsという名前の標準データディレクトリの下にディレクトリを作成し、その中で.bindingsファイルを置い:

<property key="java.naming.provider.url" value="file:///${jboss.server.data.dir}/bindings/"/> 

これは、アクセスできる宛先にメッセージをローカルに届きます。

  • ダグ