Friday, April 23, 2021

Configuring WSO2 API Manager 3.x with Tibco EMS (JMS)

  1. Open the deployment.toml file present at on repository/component/conf directory and add the following JMSSender configurations.

    If you use 127.0.0.1 host for the Tibco server, the APIM server should need to start at the same host.

    [[transport.jms.sender]]

    name = “QueueConnectionFactoryAPIM”

    parameter.initial_naming_factory =

    "com.tibco.tibjms.naming.TibjmsInitialContextFactory"

    parameter.provider_url = "tcp://127.0.0.1:7222"

    parameter.connection_factory_name = "QueueConnectionFactoryAPIM"

    parameter.connection_factory_type = "queue"

    parameter.jms_spec_version = "1.0.2b"

    parameter.username = "admin"

    parameter.password = ""

    parameter.destination_type = "queue"

    parameter.default_reply_destination = "queue"

     

  2. Placed the following jars (jms lib for Tibco ) on <APIM_HOME>/repository/components/extensions directory of the APIM server ( jms-2.0.jar, tibjms.jar, tibjmsadmin.jar, tibjmsapps.jar,tibrvjms.jar)
  3. Start the server

    Once you open the axis2.xml file residing on <APIM_HOME>/repository/components/conf/axis2/ directory; you can see the following JMSSende configurations.

    <transportSender class=”org.apache.axis2.transport.jms.JMSSender” name=”jms”>

    <parameter locked=”false” name=”QueueConnectionFactoryAPIM”>

    <parameter locked=”false” name=”java.naming.factory.initial”>com.tibco.tibjms.naming.TibjmsInitialContextFactory</parameter>

    <parameter locked=”false”

    name=”java.naming.provider.url”>tcp://127.0.0.1:7222</parameter>

    <parameter locked=”false”

    name=”transport.jms.UserName”>admin</parameter>

    <parameter locked=”false” name=”transport.jms.Password”></parameter>

    <parameter locked=”false”

    name=”transport.jms.ConnectionFactoryJNDIName”>QueueConnectionFactoryAPIM</parameter>

    <parameter locked=”false”

    name=”transport.jms.ConnectionFactoryType”>queue</parameter>

    <parameter locked=”false”

    name=”transport.jms.DefaultReplyDestinationType”>queue</parameter>

    <parameter locked=”false”

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

    <parameter name=”transport.jms.MaxJMSConnections”>5</parameter>

    </parameter>

    </transportSender>


  4. Create an API with the following endpoint (add the wild card resource path to a POST resource)

    For dual-channel temporary queue scenario, the endpoint would be like,

    jms:/Request?transport.jms.ConnectionFactory=QueueConnectionFactoryAPIM&amp;transport.jms.ContentTypeProperty=Content_Type&amp;transport.jms.DestinationType=queue&amp;transport.jms.Destination=Req

    For the dual-channel scenario with the predefined queues as request and response, the endpoint would be like,

    jms:/Request?transport.jms.ConnectionFactory=QueueConnectionFactoryAPIM&amp;transport.jms.ContentTypeProperty=Content_Type&amp;transport.jms.DestinationType=queue&amp;transport.jms.Destination=Request&amp;transport.jms.ReplyDestination=Response

  5. Publish the API.
Ref: 
https://medium.com/@hiranyakavi/configure-tibco-ems-jms-transport-scenario-with-wso2-api-manager-3-x-d4c5e0cb774b

Note:

Add The reponse mediator to  fix null pointer exception with following content:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="addToResponse"> 
   <property name="HTTP_SC" value="200" scope="axis2" />
</sequence>

No comments:

Post a Comment

Install and use xorg-server on macOS via Homebrew

  The instructions to install and use xorg-server on macOS via Homebrew: Install Homebrew (if you haven't already): /bin/bash -c ...