This site contains the documentation that is relevant to older WSO2 product versions and offerings.
For the latest WSO2 documentation, visit https://wso2.com/documentation/.
Configure with WebLogic
The following instructions describe how to configure WSO2 ESB's JMS transport with Oracle WebLogic 12.2.1.1.
Starting the WebLogic server and the ESB
- Download, set up, and start Oracle WebLogic Server.
- Start WSO2 ESB.
- Wrap the weblogic client jar and build a new OSGi bundle using the following pom.xml. The exporting of
javax.jms
package andjavax.xml.namespace
package of the client jar should be prevented. - Copy the
wlthint3client.jar
from the<WEBLOGIC_HOME>/wlserver/server/lib
directory to the<ESB_HOME>/repository/components/dropins
directory.
Configuring the WebLogic server
Configure the required connection factories and queues in WebLogic. An entry for a JMS queue would be as follows:
<queue name="wso2MessageQueue"> <sub-deployment-name>jms</sub-deployment-name> <jndi-name>jms/wso2MessageQueue</jndi-name> </queue>
<WEBLOGIC_HOME>/user_projects/domains/<DOMAIN_NAME>/config/jms/
directory. Alternatively, you can configure using the weblogic web console, which can be accessed via http://localhost:7001 with default configurations.Once you start the WebLogic server with the above changes, you will see the following on STDOUT.
<Jun 25, 2013 11:20:02 AM IST> <Notice> <WebLogicServer> <BEA-000331> <Started WebLogic Admin Server "AdminServer" for domain "wso2" running in Development Mode> <Jun 25, 2013 11:20:02 AM IST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING> <Jun 25, 2013 11:20:02 AM IST> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>
You will now need to configure the transport listener, sender, and message store in WSO2 ESB. For details on JMS configuration parameters used in the code segments, see JMS Connection Factory Parameters.
Setting up the JMS listener
To enable the JMS transport listener, add the following listener configuration related to Weblogic in the <ESB_HOME>/repository/conf/axis2/axis2.xml
file.
<transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener"> <parameter name="myQueueConnectionFactory" locked="false"> <parameter name="java.naming.factory.initial" locked="false">weblogic.jndi.WLInitialContextFactory</parameter> <parameter name="java.naming.provider.url" locked="false">t3://localhost:7001</parameter> <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">jms/myconnectionFactory</parameter> <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter> <parameter name="transport.jms.UserName" locked="false">weblogic</parameter> <parameter name="transport.jms.Password" locked="false">admin123</parameter> </parameter> <parameter name="default" locked="false"> <parameter name="java.naming.factory.initial" locked="false">weblogic.jndi.WLInitialContextFactory</parameter> <parameter name="java.naming.provider.url" locked="false">t3://localhost:7001</parameter> <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">jms/myConnectionFactory</parameter> <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter> <parameter name="transport.jms.UserName" locked="false">weblogic</parameter> <parameter name="transport.jms.Password" locked="false">admin123</parameter> </parameter> </transportReceiver>
Setting up the JMS sender
To enable the JMS transport sender, un-comment the following configuration in the <ESB_HOME>/repository/conf/axis2/axis2.xml
file.
<transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"/>
Setting up a message store in ESB
To set up a message store for WebLogic messages in the ESB, use a configuration similar to the following:
<messageStore class="org.wso2.carbon.message.store.persistence.jms.JMSMessageStore" name="wso2MessageStore"> <parameter name="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</parameter> <parameter name="store.jms.cache.connection">false</parameter> <parameter name="store.jms.password">admin123</parameter> <parameter name="java.naming.provider.url">t3://localhost:7001</parameter> <parameter name="store.jms.ConsumerReceiveTimeOut">300</parameter> <parameter name="store.jms.connection.factory">jms/myConnectionFactory</parameter> <parameter name="store.jms.username">weblogic</parameter> <parameter name="store.jms.JMSSpecVersion">1.1</parameter> <parameter name="store.jms.destination">jms/wso2MessageQueue</parameter> </messageStore>
JMS Producer Proxy Service
Use the following proxy service configuration in ESB to publish messages to the WebLogic queue:
<proxy xmlns="http://ws.apache.org/ns/synapse" name="WeblogicJMSSenderProxy" transports="http" statistics="disable" trace="disable" startOnLoad="true"> <target> <inSequence> <property name="Accept-Encoding" scope="transport" action="remove"/> <property name="Content-Length" scope="transport" action="remove"/> <property name="Content-Type" scope="transport" action="remove"/> <property name="User-Agent" scope="transport" action="remove"/> <log level="custom"> <property name="STATUS:" value="------Message send by WeblogicJMSConsumerProxy--------"/> </log> <property name="OUT_ONLY" value="true"/> <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/> <send> <endpoint> <address uri="jms:/jms/TestJMSQueue1?transport.jms.ConnectionFactoryJNDIName=jms/TestConnectionFactory1&java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory&java.naming.provider.url=t3://localhost:7001&transport.jms.DestinationType=queue"/> </endpoint> </send> </inSequence> <outSequence> <send/> </outSequence> </target> <description/> </proxy>
JMS Consumer Proxy Service
Use the following proxy service configuration in ESB to read messages from the WebLogic queue:
<proxy xmlns="http://ws.apache.org/ns/synapse" name="WeblogicJMSConsumerProxy" transports="jms" statistics="disable" trace="disable" startOnLoad="true"> <target> <inSequence> <log level="custom"> <property name="STATUS:" value="------Message consumed by WeblogicJMSConsumerProxy--------"/> </log> <log level="full"/> </inSequence> <outSequence> <send/> </outSequence> </target> <parameter name="transport.jms.Destination">jms/TestJMSQueue1</parameter> <description/> </proxy>