...
- Add the JMS Implementaiton libraries under your Wildfly classpath : under directory [wildfly installation]\modules\system\layers\base\custom, add a directory bridge. Inside bridge add directory main. Inside main, add module.xml document bearing information on the jar you intend to include. In our case, we are having a bridge between ActiveMQ and Weblogic JMS brokers. Hence we will add the following jars : activemq-all-5.11.1.jar (you can find it under ActiveMQ 5.11.1 directory), and wlthint3client.jar (you can find it under [Oracle Weblogic 12.1.3 installation]\Middleware\Oracle_Home\wlserver\server\lib).
module.xml :
<module xmlns="urn:jboss:module:2.0" name="custom.bridge">
<resources>
<resource-root path="wlthint3client.jar">
<filter>
<exclude-set>
<path name="javax.ejb"/>
<path name="javax.ejb.spi"/>
<path name="javax.transaction"/>
<path name="javax.jms"/>
<path name="javax.xml"/>
<path name="javax.xml.stream"/>
</exclude-set>
</filter>
</resource-root>
<resource-root path="activemq-all-5.11.1.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="sun.jdk" export="false" services="import">
<exports>
<include-set>
<path name="sun/security/acl"/>
<path name="META-INF/services"/>
</include-set>
</exports>
</module>
<module name="com.sun.xml.bind" />
<module name="org.omg.api"/>
<module name="javax.ejb.api" export="false" />
<module name="javax.transaction.api" export="false" />
<module name="javax.jms.api" export="false" />
<module name="javax.xml.stream.api" export="false" />
<module name="org.picketbox" optional="true"/>
<module name="javax.servlet.api" optional="true"/>
<module name="org.jboss.logging" optional="true"/>
<module name="org.jboss.as.web" optional="true"/>
<module name="org.jboss.as.ejb3" optional="true"/>
<module name="org.hornetq" />
</dependencies>
</module>
- setup the embedded Hornet Broker under Wildfly 8.2.0. Setup the appropiate bridges. Under standalone.xml, the messaging subsystem :
<subsystem xmlns="urn:jboss:domain:messaging:2.0">
<hornetq-server>
<journal-file-size>102400</journal-file-size>
<connectors>
<http-connector name="http-connector" socket-binding="http">
<param key="http-upgrade-endpoint" value="http-acceptor"/>
</http-connector>
<http-connector name="http-connector-throughput" socket-binding="http">
<param key="http-upgrade-endpoint" value="http-acceptor-throughput"/>
<param key="batch-delay" value="50"/>
</http-connector>
<in-vm-connector name="in-vm" server-id="0"/>
</connectors>
<acceptors>
<http-acceptor http-listener="default" name="http-acceptor"/>
<http-acceptor http-listener="default" name="http-acceptor-throughput">
<param key="batch-delay" value="50"/>
<param key="direct-deliver" value="false"/>
</http-acceptor>
<in-vm-acceptor name="in-vm" server-id="0"/>
</acceptors>
<security-settings>
<security-setting match="#">
<permission type="send" roles="guest"/>
<permission type="consume" roles="guest"/>
<permission type="createNonDurableQueue" roles="guest"/>
<permission type="deleteNonDurableQueue" roles="guest"/>
</security-setting>
</security-settings>
<address-settings>
<address-setting match="#">
<dead-letter-address>
jms.queue.DLQ
</dead-letter-address>
<expiry-address>jms.queue.ExpiryQueue</expiry-address>
<max-size-bytes>10485760</max-size-bytes>
<page-size-bytes>2097152</page-size-bytes>
<message-counter-history-day-limit>10</message-counter-history-day-limit>
</address-setting>
</address-settings>
<jms-connection-factories>
<connection-factory name="InVmConnectionFactory">
<connectors>
<connector-ref connector-name="in-vm"/>
</connectors>
<entries>
<entry name="java:/ConnectionFactory"/>
</entries>
</connection-factory>
<connection-factory name="RemoteConnectionFactory">
<connectors>
<connector-ref connector-name="http-connector"/>
</connectors>
<entries>
<entry name="java:jboss/exported/jms/RemoteConnectionFactory"/>
</entries>
</connection-factory>
<pooled-connection-factory name="hornetq-ra">
<transaction mode="xa"/>
<connectors>
<connector-ref connector-name="in-vm"/>
</connectors>
<entries>
<entry name="java:/JmsXA"/>
<entry name="java:jboss/DefaultJMSConnectionFactory"/>
</entries>
</pooled-connection-factory>
</jms-connection-factories>
<jms-destinations>
<jms-queue name="ExpiryQueue">
<entry name="java:/jms/queue/ExpiryQueue"/>
</jms-queue>
<jms-queue name="DLQ">
<entry name="java:/jms/queue/DLQ"/>
</jms-queue>
<jms-queue name="dfQueue">
<entry name="jms/dfQueue"/>
<entry name="java:jboss/exported/jms/dfQueue"/>
</jms-queue>
<jms-queue name="bridge">
<entry name="jms/queue/bridge"/>
<entry name="java:jboss/exported/jms/queue/bridge"/>
</jms-queue>
</jms-destinations>
</hornetq-server>
<jms-bridge name="outgoing-msg-bridge" module="custom.bridge">
<source>
<connection-factory name="ConnectionFactory"/>
<destination name="jms/queue/bridge"/>
<context>
<property key="java.naming.factory.initial" value="org.apache.activemq.jndi.ActiveMQInitialContextFactory"/>
<property key="java.naming.provider.url" value="tcp://localhost:61616?jms.rmIdFromConnectionId=true"/>
</context>
</source>
<target>
<connection-factory name="ConnectionFactory"/>
<destination name="jms/queue/bridge"/>
<context>
<property key="java.naming.factory.initial" value="weblogic.jndi.WLInitialContextFactory"/>
<property key="java.naming.provider.url" value="t3://127.0.0.1:7001"/>
<property key="java.naming.provider.principal" value="xxx"/>
<property key="java.naming.provider.credential" value="xxx"/>
</context>
</target>
<quality-of-service>AT_MOST_ONCE</quality-of-service>
<failure-retry-interval>10000</failure-retry-interval>
<max-retries>-1</max-retries>
<max-batch-size>500</max-batch-size>
<max-batch-time>500</max-batch-time>
<add-messageID-in-header>true</add-messageID-in-header>
</jms-bridge>
<jms-bridge name="ingoing-msg-bride" module="custom.bridge">
<source>
<connection-factory name="ConnectionFactory"/>
<destination name="jms/dfQ"/>
<context>
<property key="java.naming.factory.initial" value="weblogic.jndi.WLInitialContextFactory"/>
<property key="java.naming.provider.url" value="t3://127.0.0.1:7001"/>
<property key="java.naming.provider.principal" value="xxx"/>
<property key="java.naming.provider.credential" value="xxx"/>
</context>
</source>
<target>
<connection-factory name="ConnectionFactory"/>
<destination name="jms/dfQ"/>
<context>
<property key="java.naming.factory.initial" value="org.apache.activemq.jndi.ActiveMQInitialContextFactory"/>
<property key="java.naming.provider.url" value="tcp://localhost:61616?jms.rmIdFromConnectionId=true"/>
</context>
</target>
<quality-of-service>AT_MOST_ONCE</quality-of-service>
<failure-retry-interval>10000</failure-retry-interval>
<max-retries>-1</max-retries>
<max-batch-size>500</max-batch-size>
<max-batch-time>500</max-batch-time>
<add-messageID-in-header>true</add-messageID-in-header>
</jms-bridge>
</subsystem>