Domanda

Mi stavo chiedendo come configurare un trasporto JMS per funzionare con IBM Messageight, simile a: http://docs.wso2.org/display/esb460/configure+with+activeMQ

In questo momento, ho il seguente in Axis2.xml:

  <transportReceiver name="ibmMsgSightJMS" class="org.apache.axis2.transport.jms.JMSListener">
       <parameter name="myTopicConnectionFactory" locked="false">
           <parameter name="java.naming.factory.initial" locked="false">com.ibm.ima.jms.ImaJmsFactory</parameter>
           <parameter name="java.naming.provider.url" locked="false">tcp://192.168.154.128:1883</parameter>
           <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
       </parameter>

       <parameter name="myQueueConnectionFactory" locked="false">
           <parameter name="java.naming.factory.initial" locked="false">com.ibm.ima.jms.ImaJmsFactory</parameter>
           <parameter name="java.naming.provider.url" locked="false">tcp://192.168.154.128:1883</parameter>
           <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
       </parameter>
       <parameter name="default" locked="false">
           <parameter name="java.naming.factory.initial" locked="false">com.ibm.ima.jms.ImaJmsFactory</parameter>
           <parameter name="java.naming.provider.url" locked="false">tcp://192.168.154.128:1883</parameter>
           <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
       </parameter>
   </transportReceiver>
.

E ho qualcosa di simile in un servizio proxy ESB:

<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="esbProcessMqttJMSPS" statistics="disable" trace="disable" transports="ibmMsgSightJMS">
    <parameter name="transport.jms.ConcurrentConsumers">1</parameter>
    <parameter name="transport.jms.ConnectionFactory">myTopicConnectionFactory</parameter>
    <parameter name="transport.jms.DestinationType">B</parameter>
    <parameter name="transport.jms.Destination">B</parameter>
</proxy>
.

Quando avvio il server ESB, ottengo il seguente errore: impossibile acquisire il contesto JNDI, JMS Connection Factory: TopicConnectionFactory o Destinazione predefinita: NULL per JMS CF

Qualsiasi aiuto sarebbe molto apprezzato.Grazie!

È stato utile?

Soluzione

Okay, quindi ho capito questo.

La configurazione JMS in AXIS2.xml dovrebbe essere:

   <transportReceiver name="ibmMsgSightJMS" class="org.apache.axis2.transport.jms.JMSListener">
       <parameter name="myTopicConnectionFactory">
           <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
           <parameter name="java.naming.provider.url" locked="false">file:/C:/path/to/wso2/repository/conf/jndi</parameter>
           <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">connFactory1</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
       </parameter>

       <parameter name="myQueueConnectionFactory">
           <parameter name="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
           <parameter name="java.naming.provider.url">file:/C:/path/to/wso2/repository/conf/jndi</parameter>
           <parameter name="transport.jms.ConnectionFactoryJNDIName">connFactory1</parameter>
            <parameter name="transport.jms.ConnectionFactoryType">queue</parameter>
       </parameter>

       <parameter name="default">
           <parameter name="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
           <parameter name="java.naming.provider.url">file:/C:/path/to/wso2/repository/conf/jndi</parameter>
           <parameter name="transport.jms.ConnectionFactoryJNDIName">connFactory1</parameter>
            <parameter name="transport.jms.ConnectionFactoryType">topic</parameter>
       </parameter>
   </transportReceiver>
.

E ho un file di proprietà JNDI denominato .bindings con quanto segue:

connFactory1/ClassName=com.ibm.ima.jms.impl.ImaConnectionFactory
connFactory1/FactoryName=com.ibm.ima.jms.impl.ImaConnectionFactory
connFactory1/RefAddr/0/Encoding=String
connFactory1/RefAddr/0/Type=Port
connFactory1/RefAddr/0/Content=16102
connFactory1/RefAddr/1/Encoding=String
connFactory1/RefAddr/1/Type=Server
connFactory1/RefAddr/1/Content=192.168.154.128
connFactory1/RefAddr/2/Encoding=String
connFactory1/RefAddr/2/Content=common
connFactory1/RefAddr/2/Type=ObjectType
RequestTopic/ClassName=com.ibm.ima.jms.impl.ImaTopic
RequestTopic/FactoryName=com.ibm.ima.jms.impl.ImaTopic
RequestTopic/RefAddr/0/Encoding=String
RequestTopic/RefAddr/0/Type=Name
RequestTopic/RefAddr/0/Content=testRequestTopic
ResponseTopic/ClassName=com.ibm.ima.jms.impl.ImaTopic
ResponseTopic/FactoryName=com.ibm.ima.jms.impl.ImaTopic
ResponseTopic/RefAddr/0/Encoding=String
ResponseTopic/RefAddr/0/Type=Name
ResponseTopic/RefAddr/0/Content=testResponseTopic
.

Inoltre, non dimenticare di mettere l'imajmsclient.jar all'interno di componenti / lib.

Sto ancora avendo problemi in cui ogni servizio sta creando argomenti / code, e perché non sono definiti in .bindings, il server è vincitore.Ho lavorato attorno a questo rimuovendo il protocollo di trasporto JMS su ogni servizio dati e servizio JAR.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top