2017-07-26 13 views
0

私はトピックにJMSテキストメッセージを公開していますし、消費者が消費者にことができます(MDB)のテキストメッセージでnullです。しかし、メッセージオブジェクトと文字列プロパティを取得することはできません。 MDBの消費者側ではnullです。私は、META-INFフォルダの下でejb-jar.xmlにMDBを定義しました。私はTomee公式の例を述べた以下の査読IBM MQ Messageプロパティには、MDB

TomEEプラス7.0.2 JMS 2.0 IBM MQ 8 JDK 1.8 トピックを使用しています。例では、彼らは代わりにtomee.xmlを使用私はresource.xmlを使用とweb.xmlを使用していない

消費者はMessageDrivenBeanの

消費者は、テキストまたはオブジェクトのメッセージを取得することができています。しかし、Messageプロパティはnullです。

http://tomee.apache.org/tomee-and-webspheremq.html

@Resource(name = "qcf") 
    private ConnectionFactory connectionFactory; 
    @Resource(name = "wmq-javax.jms.Topic") 
    private Topic topic; 
    Connection connection = connectionFactory.createConnection(); 
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 
    MessageProducer producer = session.createProducer(topic); 
    TextMessage message = session.createTextMessage(); 
    message.setText("Test Message"); 
    message.setObjectProperty("a","b"); 
    message.setStringProperty("c","D"); 
    connection.start(); 
    producer.send(message); 
    session.close(); 
    connection.close(); 

消費者

<ejb-jar id="ejb-jar_ID" version="3.1" 
     xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
          http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"> 

    <display-name>SampleTransactionMDB</display-name> 
    <enterprise-beans> 
    <message-driven> 
     <display-name>SampleTransactionMDB</display-name> 
     <ejb-name>SampleTransactionMDB</ejb-name> 
     <ejb-class>com.example.SampleTransactionMDB</ejb-class> 
     <transaction-type>Container</transaction-type> 
     <activation-config> 
     <activation-config-property> 
      <activation-config-property-name>destinationType</activation-config-property-name> 
      <activation-config-property-value>javax.jms.Queue</activation-config-property-value> 
     </activation-config-property> 
     <activation-config-property> 
      <activation-config-property-name>destination</activation-config-property-name> 
      <activation-config-property-value>openejb:Resource/projectname/topicname</activation-config-property-value> 
     </activation-config-property> 
     </activation-config> 

     <activation-config-property> 
      <activation-config-property-name>useJNDI</activation-config-property-name> 
      <activation-config-property-value>true</activation-config-property-value> 
     </activation-config-property> 

     <activation-config-property> 
      <activation-config-property-name>HostName</activation-config-property-name> 
      <activation-config-property-value>x.x.x.x</activation-config-property-value> 
     </activation-config-property> 

     <activation-config-property> 
      <activation-config-property-name>Port</activation-config-property-name> 
      <activation-config-property-value>123</activation-config-property-value> 
     </activation-config-property> 
     <activation-config-property> 
      <activation-config-property-name>QueueManager</activation-config-property-name> 
      <activation-config-property-value>xxxxx</activation-config-property-value> 
     </activation-config-property> 
     <activation-config-property> 
      <activation-config-property-name>Channel</activation-config-property-name> 
      <activation-config-property-value>xxxx</activation-config-property-value> 
     </activation-config-property> 
     <activation-config-property> 
      <activation-config-property-name>TransportType</activation-config-property-name> 
      <activation-config-property-value>CLIENT</activation-config-property-value> 
     </activation-config-property> 
     <activation-config-property> 
      <activation-config-property-name>subscriptionName</activation-config-property-name> 
      <activation-config-property-value>xxxxxx</activation-config-property-value> 
     </activation-config-property> 
     <activation-config-property> 
      <activation-config-property-name>sharedSubscription</activation-config-property-name> 
      <activation-config-property-value>true</activation-config-property-value> 
     </activation-config-property> 


    </message-driven> 
    </enterprise-beans> 
    <assembly-descriptor> 
    </assembly-descriptor> 
</ejb-jar> 

メッセージプロパティは、MDBの消費者にnullであるなぜ私をガイド。プロデューサー= session.createProducer(キュー)

答えて

0

私は、問題の根本的な原因を発見しました。それは私の間違いです。 TopicProxyのtargetClientJMSでなければなりません。私は間違ってMQとして設定しました。私はメッセージを受け取ることができましたが、財産は取得できませんでした。 JMSにtargetClient値を変更した後

。私は私がresource.xmlのメッセージや財産

http://tomee.apache.org/tomee-and-webspheremq.html

0

のMessageProducer。

トピックにメッセージを公開する場合は、なぜ「キュー」という名前の変数を使用していますか?トピック文字列は一般的に 'test/ABC/one'(引用符なし)のように見えます。

第二に、なぜあなたは、消費者のためのコードを投稿しませんでしたか?消費者コードを含めるようにオリジナルの転記を更新してください。

+0

を追加しましたコンシューマコードだけでなく – Gnana

+0

ご参照くださいhttp://tomee.apache.org/tomee-and-webspheremq.htmlを取得することができていますトピックと接続を構成します。私はtomee.xmlとしてresource.xmlとして使用していません – Gnana

+0

私は両方(トピックとキュー)を試しました。メッセージのプロパティはnull – Gnana

関連する問題