Showing posts with label jms. Show all posts
Showing posts with label jms. Show all posts

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>

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 ...