java -jar wljarbuilder.jar
WebLogic JMS Integration
If you are using a WebLogic version prior to 10.3, copy the weblogic.jar
file to $MULE_HOME/lib/user
. For WebLogic versions 10.3 and up, you must generate a wlfullclient.jar
file from your WebLogic installation as follows:
-
Go to the
server/lib
directory of your WebLogic installation. -
Run this command to generate the client JAR:
-
Copy the generated
wlfullclient.jar
file to the$MULE_HOME/lib/user
directory.
JNDI destinations syntax If Mule fails to look up topics or queues in WebLogic’s JNDI, but the JNDI tree lists them as available, try replacing JNDI subcontext delimiters with dots, so tracker/topic/PriceUpdates becomes tracker.topic.PriceUpdates .
|
Configuration for WebLogic 8.x and Earlier
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:jms="http://www.mulesoft.org/schema/mule/jms"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/3.0/mule.xsd
http://www.mulesoft.org/schema/mule/jms http://www.mulesoft.org/schema/mule/jms/3.0/mule-jms.xsd">
<jms:connector name="jmsConnector"
jndiProviderUrl="t3://localhost:7001"
connectionFactoryJndiName="javax.jms.QueueConnectionFactory"
jndiDestinations="true"
forceJndiDestinations="true"
jndiInitialFactory="weblogic.jndi.WLInitialContextFactory"
specification="1.0.2b"/>
Configuration for WebLogic 9.x
For WebLogic 9.x, the configuration is almost the same. The only differences are:
-
Supported JMS specification level is 1.1 (1.0.2b should still work, however)
-
The unified JMS connection factory can be used as a result of the above. The following example demonstrates using the default factories available out of the box.
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:jms="http://www.mulesoft.org/schema/mule/jms"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/3.0/mule.xsd
http://www.mulesoft.org/schema/mule/jms http://www.mulesoft.org/schema/mule/jms/3.0/mule-jms.xsd">
<jms:connector name="jmsConnector"
jndiProviderUrl="t3://localhost:7001"
connectionFactoryJndiName="weblogic.jms.ConnectionFactory"
jndiDestinations="true"
forceJndiDestinations="true"
jndiInitialFactory="weblogic.jndi.WLInitialContextFactory"
specification="1.1"/>
Configuring Security
The following example shows how to configure security on WebLogic 9.x using Spring:
<spring:bean name="jmsProperties" class="java.util.HashMap">
<spring:constructor-arg>
<spring:map>
<spring:entry key="java.naming.security.principal" value="secureUser"/>
<spring:entry key="java.naming.security.credentials" value="password"/>
<spring:entry key="java.naming.security.authentication" value="simple"/>
</spring:map>
</spring:constructor-arg>
</spring:bean>
<jms:connector ...
jndiProviderProperties-ref="jmsProperties"
/>
If you are using the enterprise edition of Mule ESB 2.2.3 or later, and you want to override the authorization at the endpoint level, you do the following:
-
Specify a custom JMS connector that uses the
com.mulesoft.mule.transport.jms.weblogic.EeWeblogicJmsConnector
class -
Create a transformer that deletes the security properties
-
Call that transformer on the endpoint where you want to override the authorization, and then specify the new properties.
For example:
<!--
JNDI security props have to be deleted so they aren't propagated to remote destinations in the message
-->
<message-properties-transformer name="stripJndiProps">
<delete-message-property key="java.naming.security.principal"/>
<delete-message-property key="java.naming.security.credentials"/>
<delete-message-property key="java.naming.security.authentication"/>
</message-properties-transformer>
<jms:object-to-jmsmessage-transformer name="obj2jms"/>
<jms:jmsmessage-to-object-transformer name="jms2obj"/>
<jms:custom-connector name="weblogicConnector"
class="com.mulesoft.mule.transport.jms.weblogic.EeWeblogicJmsConnector"
jndiInitialFactory="weblogic.jndi.WLInitialContextFactory"
connectionFactoryJndiName="weblogic.jms.ConnectionFactory"
jndiDestinations="true"
forceJndiDestinations="true"
specification="1.1"
numberOfConsumers="8"
jndiProviderProperties-ref="jmsSecure1Properties"
disableTemporaryReplyToDestinations="true">
</jms:custom-connector>
<model name="SecureJMSTesting">
<service name="SecureJMS">
<inbound>
<jms:inbound-endpoint queue="jms.SecuredQueue1"
transformer-refs="jms2obj stripJndiProps">
<properties>
<spring:entry key="java.naming.security.principal" value="user1"/>
<spring:entry key="java.naming.security.credentials" value="password1"/>
<spring:entry key="java.naming.security.authentication" value="simple"/>
</properties>
<jms:transaction action="BEGIN_OR_JOIN"/>
</jms:inbound-endpoint>
</inbound>