Sunday, February 24, 2013

How to configure publisher-subscriber message exchange scenarios in WSO2 ESB

This blog describes the steps to configure publisher-subscriber message exchange scenarios in WSO2 ESB with IBM MQ.

How to configure IBM MQ reference: http://techfeast-hiranya.blogspot.com/2009/09/enterprise-messaging-with-synapse-wso2.html

Queue Scenario 1 : Client(JMS) ----> Q1 (IBM MQ - ivtQ) ------> ESB ------> Axis2server

Queue Scenario 2 : Client(JMS) ----> ESB ------> Q2 (IBM MQ) ------> Axis2server

Topic Scenario 1 : Client(JMS) ----> T1 (IBM MQ - ivtT) ------> ESB ------> Axis2server

Topic Scenario 2 : Client(JMS) ----> ESB ------> T2 (IBM MQ) ------> Axis2server

Queue Scenario - 1
In this scenario JMS client is placing an order in ivtQ and ESB listens to the Queue and when the message is received, ESB will fetch the message from queue and send to the back-end server to process the request.

1. Enable the JMS listener in the axis2.xml. Configure the default and userdefined connection factories as follows:

Note: Here the connection factory name is ‘SQProxyCF’ which will be used by the STOCKQUOTEPROXY proxy service in the 250 sample

<transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
     <!-- parameter name="myTopicConnectionFactory" locked="false">
     <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
     <parameter name="java.naming.provider.url" locked="false">file:/D:/JNDI-Directory</parameter>
     <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtTCF</parameter>
     <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
     <parameter name="transport.jms.Destination">ivtT</parameter>
     </parameter -->
        
     <parameter name="SQProxyCF" locked="false">
     <parameter name="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
     <parameter name="java.naming.provider.url">file:/D:/JNDI-Directory</parameter>
     <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtQCF</parameter>
     <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
     <parameter name="transport.jms.Destination">ivtQ</parameter>
     </parameter>

     <parameter name="default" locked="false">
     <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
     <parameter name="java.naming.provider.url" locked="false">file:/C:/JNDI-Directory</parameter>
     <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtQCF</parameter>
     <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
     <parameter name="transport.jms.Destination">bogusq</parameter>
     </parameter>
</transportReceiver>

If you are using IBM MQ 6.0 , then you may need to add this line as well:


<parameter name="transport.jms.JMSSpecVersion">1.0.2b</parameter>

Note: Here MQ 6.0 uses JMS Spec version 1.0.2b instead of 1.1

2. Now start the ESB using samples as follows:
    wso2esb-samples.bat -sn 250

Then login to the server management console at: https://localhost:9443/carbon/

Select web services -> list -> StockQuoteProxy -> edit (Specific Configuration)

Add a Service Parameter as follows: name = transport.jms.ConnectionFactory value = SQProxyCF and save it.

3. Go to SYNAPSE_HOME/samples/axis2Client directory and build it using "ant".

4. Then go to SYNAPSE_HOME/samples/axis2Client/src/samples/userguide and open the GenericJMSClient.java source file. Make the following changes in the code:
  • Set the jms_dest property default value to "ivtQ" (line 45)
  • Set the java.naming.provider.url to "file:/D:/JNDI-Directory" (line 82)
  • Set the java.naming.factory.initial to "com.sun.jndi.fscontext.RefFSContextFactory" (line 85)
  • Set the lookup key to "ivtQCF" (line 89)

5. Proxy Configuration:


<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://ws.apache.org/ns/synapse">
    <proxy name="StockQuoteProxy" transports="https http jms" startOnLoad="true" trace="disable">
        <target>
            <endpoint>
                <address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            </endpoint>
            <inSequence>
                <property name="OUT_ONLY" value="true"/>
            </inSequence>
            <outSequence>
                <send/>
            </outSequence>
        </target>
        <publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/>
        <parameter name="transport.jms.ContentType">
            <rules>
                <jmsProperty>contentType</jmsProperty>
                <default>application/xml</default>
            </rules>
        </parameter>
     <parameter name="transport.jms.ConnectionFactory">SQProxyCF</parameter>
    </proxy>
    <sequence name="fault">
        <log level="full">
            <property name="MESSAGE" value="Executing default &quot;fault&quot; sequence"/>
            <property name="ERROR_CODE" expression="get-property('ERROR_CODE')"/>
            <property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/>
        </log>
        <drop/>
    </sequence>
    <sequence name="main">
        <log/>
        <drop/>
    </sequence>
</definitions>

6. Configure \samples\axis2Server\repository\conf\axis2.xml file as follows.

<transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
 <!--parameter name="myTopicConnectionFactory" locked="false">
        <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
        <parameter name="java.naming.provider.url" locked="false">file:/D:/JNDI-Directory</parameter>
        <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtTCF</parameter>
          <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
          <parameter name="transport.jms.Destination">ivtT</parameter>
        </parameter-->
        
        <!--parameter name="SQProxyCF" locked="false">
          <parameter name="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
          <parameter name="java.naming.provider.url">file:/D:/JNDI-Directory</parameter>
          <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtQCF</parameter>
          <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
          <parameter name="transport.jms.Destination">ivtQ</parameter>
        </parameter-->

        <parameter name="default" locked="false">
        <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
        <parameter name="java.naming.provider.url" locked="false">file:/D/JNDI-Directory</parameter>
        <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtQCF</parameter>
          <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
          <parameter name="transport.jms.Destination">bogusq</parameter>
        </parameter>
    </transportReceiver>

7. Now start axis2 Server with the following command:
    axis2Server.bat

Then send the request from JMS client and the sample Axis2 server console will print a message.

ant jmsclient -Djms_type=pox -Djms_dest=ivtQ -Djms_payload=MSFT

Queue Scenario - 2
In this sctenario JMS client is placing an order in ESB and ESB is placing it in a Queue. Back-end server listens to the Queue and when the message is received Back-end server will fetch from queue to process the request.

1. Configure the repository\conf\axis2.xml files as follows (comment the SQProxyCF connection for this scenario) as follows:

<transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
    <!--parameter name="myTopicConnectionFactory" locked="false">
    <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
    <parameter name="java.naming.provider.url" locked="false">file:/D:/JNDI-Directory</parameter>
    <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtTCF</parameter>
    <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
    <parameter name="transport.jms.Destination">ivtT</parameter>
    </parameter-->
        
    <!--parameter name="SQProxyCF" locked="false">
    <parameter name="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
    <parameter name="java.naming.provider.url">file:/D:/JNDI-Directory</parameter>
    <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtQCF</parameter>
    <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
    <parameter name="transport.jms.Destination">ivtQ</parameter>
    </parameter-->

    <parameter name="default" locked="false">
    <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
    <parameter name="java.naming.provider.url" locked="false">file:/D/JNDI-Directory</parameter>
    <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtQCF</parameter>
    <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
    <parameter name="transport.jms.Destination">bogusq</parameter>
    </parameter>
</transportReceiver>

2. Now start the ESB using samples with the following command:
    wso2esb-samples.bat -sn 251

Then log into the ESB server management console at: https://localhost:9443/carbon/

Select Service Bus -> Source view and update the JMS URL as follows:

jms:/ivtQ?transport.jms.ConnectionFactoryJNDIName=ivtQCF&amp;java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory&amp;java.naming.provider.url=file:/D:/JNDI-Directory&amp;transport.jms.DestinationType=queue&amp;transport.jms.ConnectionFactoryType=queue &amp;transport.jms.Destination=ivtQ

3. Proxy Configuration

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://ws.apache.org/ns/synapse">
    <proxy name="StockQuoteProxy" transports="https http" startOnLoad="true" trace="disable">
        <target>
            <endpoint>
                <address uri="jms:/ivtQ?transport.jms.ConnectionFactoryJNDIName=ivtQCF&amp;java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory&amp;java.naming.provider.url=file:/D:/JNDI-Directory&amp;transport.jms.DestinationType=queue&amp;transport.jms.ConnectionFactoryType=queue&amp;transport.jms.Destination=ivtQ"/>
            </endpoint>
            <inSequence>
                <property name="TRANSPORT_HEADERS" scope="axis2" action="remove"/>
                <property name="OUT_ONLY" value="true"/>
            </inSequence>
            <outSequence>
                <send/>
            </outSequence>
        </target>
        <publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/>
    </proxy>
    <sequence name="fault">
        <log level="full">
            <property name="MESSAGE" value="Executing default &quot;fault&quot; sequence"/>
            <property name="ERROR_CODE" expression="get-property('ERROR_CODE')"/>
            <property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/>
        </log>
        <drop/>
    </sequence>
    <sequence name="main">
        <log/>
        <drop/>
    </sequence>
</definitions>

4. Configure the \samples\axis2Server\repository\conf\axis2.xml file as follows:

<transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
    <!--parameter name="myTopicConnectionFactory" locked="false">
    <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
    <parameter name="java.naming.provider.url" locked="false">file:/D:/JNDI-Directory</parameter>
    <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtTCF</parameter>
    <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
    <parameter name="transport.jms.Destination">ivtT</parameter>
    </parameter-->
        
    <parameter name="SQProxyCF" locked="false">
    <parameter name="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
    <parameter name="java.naming.provider.url">file:/D:/JNDI-Directory</parameter>
    <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtQCF</parameter>
    <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
    <parameter name="transport.jms.Destination">ivtQ</parameter>
    </parameter>

    <parameter name="default" locked="false">
    <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
    <parameter name="java.naming.provider.url" locked="false">file:/D:/JNDI-Directory</parameter>
    <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtQCF</parameter>
    <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
    <parameter name="transport.jms.Destination">bogusq</parameter>
    </parameter>
</transportReceiver>

5. Now start axis2 Server with the following command:
    axis2Server.bat

Add following parameters to service.xml file in the \samples\axis2Server\repository\services\SimpleStockQuoteService.aar

<parameter name="transport.jms.ConnectionFactory">SQProxyCF</parameter>
<parameter name="transport.jms.Destination">ivtQ</parameter>

Send the request from JMS client and the sample Axis2 server console will print a message as follows:

Send the request from JMS client and the sample Axis2 server console will print a message as follows:

ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy -Dmode=placeorder -Dsymbol=MSFT

Topic Scenario - 1
In this scenario JMS client is placing an order in ivtT and ESB listens to the Topic and when the message is received, ESB will fetch from queue and send to the back-end server to process the request.

1. Configure the repository\conf\axis2.xml files as follows:


<transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
    <parameter name="myTopicConnectionFactory" locked="false">
    <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
    <parameter name="java.naming.provider.url" locked="false">file:/D:/JNDI-Directory</parameter>
    <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtTCF</parameter>
    <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
    <parameter name="transport.jms.Destination">ivtT</parameter>
    </parameter>
        
    <!--parameter name="SQProxyCF" locked="false">
    <parameter name="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
    <parameter name="java.naming.provider.url">file:/D:/JNDI-Directory</parameter>
    <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtQCF</parameter>
    <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
    <parameter name="transport.jms.Destination">ivtQ</parameter>
    </parameter-->

    <parameter name="default" locked="false">
    <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
    <parameter name="java.naming.provider.url" locked="false">file:/D:/JNDI-Directory</parameter>
    <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtQCF</parameter>
    <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
    <parameter name="transport.jms.Destination">bogusq</parameter>
    </parameter>
</transportReceiver>

Note:Comment the SQProxyCF connection for this scenario

2. Now start the ESB using samples as follows:     wso2esb-samples.bat -sn 250

Then log to the server management console at: https://localhost:9443/carbon/ Select web services -> list -> StockQuoteProxy -> edit (Specific Configuration)

Add a Service Parameter as follows:     name = transport.jms.ConnectionFactory value = myTopicConnectionFactory and save it

3. Go to SYNAPSE_HOME/samples/axis2Client/src/samples/userguide and open the GenericJMSClient.java source file. Make the following changes in the code:
  • Set the jms_dest property default value to "ivtT" (line 45)
  • Set the java.naming.provider.url to "file:/D:/JNDI-Directory" (line 82)
  • Set the java.naming.factory.initial to "com.sun.jndi.fscontext.RefFSContextFactory" (line 85)
  • Set the lookup key to "ivtTCF" (line 89)

4. Proxy Configuration

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://ws.apache.org/ns/synapse">
    <proxy name="StockQuoteProxy" transports="https http" startOnLoad="true" trace="disable">
        <target>
            <endpoint>
                <address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            </endpoint>
            <inSequence>
                <property name="OUT_ONLY" value="true"/>
            </inSequence>
            <outSequence>
                <send/>
            </outSequence>
        </target>
        <publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/>
        <parameter name="transport.jms.ContentType">
            <rules>
                <jmsProperty>contentType</jmsProperty>
                <default>application/xml</default>
            </rules>
        </parameter>
        <parameter name="transport.jms.ConnectionFactory">myTopicConnectionFactory</parameter>
    </proxy>
    <sequence name="fault">
        <log level="full">
            <property name="MESSAGE" value="Executing default &quot;fault&quot; sequence"/>
            <property name="ERROR_CODE" expression="get-property('ERROR_CODE')"/>
            <property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/>
        </log>
        <drop/>
    </sequence>
    <sequence name="main">
        <log/>
        <drop/>
    </sequence>
</definitions>

5. Configure the \samples\axis2Server\repository\conf\axis2.xml file as follows:


<transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
   <!--parameter name="myTopicConnectionFactory" locked="false">
   <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
   <parameter name="java.naming.provider.url" locked="false">file:/D:/JNDI-Directory</parameter>
   <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtTCF</parameter>
   <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
   <parameter name="transport.jms.Destination">ivtT</parameter>
   </parameter-->
        
   <!--parameter name="SQProxyCF" locked="false">
   <parameter name="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
   <parameter name="java.naming.provider.url">file:/D:/JNDI-Directory</parameter>
   <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtQCF</parameter>
   <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
   <parameter name="transport.jms.Destination">ivtQ</parameter>
   </parameter-->

   <parameter name="default" locked="false">
   <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
   <parameter name="java.naming.provider.url" locked="false">file:/D:/JNDI-Directory</parameter>
   <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtQCF</parameter>
   <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
   <parameter name="transport.jms.Destination">bogusq</parameter>
   </parameter>    
</transportReceiver>

6. Now start axis2 Server with the following command:     axis2Server.bat

Then send the request from the JMS client and the sample Axis2 server console will print a message.

ant jmsclient -Djms_type=pox -Djms_dest=ivtT -Djms_payload=MSFT

Topic Scenario - 2
In this scenario JMS client is placing order to ESB and ESB places it in a Topic. Back-end server listens to the Topic, when the message is received, Back-end server will fetch it from the queue and process the request.

1. Configure the repository\conf\axis2.xml files as follows:

<transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
   <!--parameter name="myTopicConnectionFactory" locked="false">
   <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
   <parameter name="java.naming.provider.url" locked="false">file:/D:/JNDI-Directory</parameter>
   <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtTCF</parameter>
   <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
   <parameter name="transport.jms.Destination">ivtT</parameter>
   </parameter-->
        
   <!--parameter name="SQProxyCF" locked="false">
   <parameter name="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
   <parameter name="java.naming.provider.url">file:/D:/JNDI-Directory</parameter>
   <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtQCF</parameter>
   <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
   <parameter name="transport.jms.Destination">ivtQ</parameter>
   </parameter-->

   <parameter name="default" locked="false">
   <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
   <parameter name="java.naming.provider.url" locked="false">file:/D:/JNDI-Directory</parameter>
   <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtQCF</parameter>
   <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
   <parameter name="transport.jms.Destination">bogusq</parameter>
   </parameter>
</transportReceiver>

2. Now start the ESB using samples as follows:
    wso2esb-samples.bat -sn 251

Then log to the server management console at: https://localhost:9443/carbon/

Select Service Bus -> Source view and JMS url has to be update as follows: "transport.jms.DestinationType" should be changed to topic manually and updated.

Note: This is a known issue https://issues.apache.org/jira/browse/TRANSPORTS-16

3. Add following parameters to service.xml file in the \samples\axis2Server\repository\services\SimpleStockQuoteService.aar:

<parameter name="transport.jms.ConnectionFactory">myTopicConnectionFactory</parameter>
<parameter name="transport.jms.Destination">ivtT</parameter>

4. Proxy Configuration

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://ws.apache.org/ns/synapse">
    <proxy name="StockQuoteProxy" transports="https http" startOnLoad="true" trace="disable">
        <target>
            <endpoint>
                <address uri="jms:/ivtT?transport.jms.ConnectionFactoryJNDIName=ivtTCF&amp;java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory&amp;java.naming.provider.url=file:/D:/JNDI-Directory&amp;transport.jms.DestinationType=topic&amp;transport.jms.ConnectionFactoryType=topic&amp;transport.jms.Destination=ivtT"/>
            </endpoint>
            <inSequence>
                <property name="TRANSPORT_HEADERS" scope="axis2" action="remove"/>
                <property name="OUT_ONLY" value="true"/>
            </inSequence>
            <outSequence>
                <send/>
            </outSequence>
        </target>
        <publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/>
    </proxy>
    <sequence name="fault">
        <log level="full">
            <property name="MESSAGE" value="Executing default &quot;fault&quot; sequence"/>
            <property name="ERROR_CODE" expression="get-property('ERROR_CODE')"/>
            <property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/>
        </log>
        <drop/>
    </sequence>
    <sequence name="main">
        <log/>
        <drop/>
    </sequence>
</definitions>

5. Configure the \samples\axis2Server\repository\conf\axis2.xml file as follows:

<transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
   <parameter name="myTopicConnectionFactory" locked="false">
   <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
   <parameter name="java.naming.provider.url" locked="false">file:/D:/JNDI-Directory</parameter>
   <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtTCF</parameter>
   <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
   <parameter name="transport.jms.Destination">ivtT</parameter>
   </parameter>
        
   <!--parameter name="SQProxyCF" locked="false">
   <parameter name="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
   <parameter name="java.naming.provider.url">file:/D:/JNDI-Directory</parameter>
   <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtQCF</parameter>
   <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
   <parameter name="transport.jms.Destination">ivtQ</parameter>
   </parameter-->

   <parameter name="default" locked="false">
   <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
   <parameter name="java.naming.provider.url" locked="false">file:/D:/JNDI-Directory</parameter>
   <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">ivtQCF</parameter>
   <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
   <parameter name="transport.jms.Destination">bogusq</parameter>
   </parameter>
</transportReceiver>

6. Now start axis2 Server as follows:
    axis2Server.bat

Then send request from JMS client and the sample Axis2 server console will print the following message:

ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy -Dmode=placeorder -Dsymbol=MSFT

1 comment: