JBossESBMessagingSupport

Version 13

    !!!JBossESB Messaging Providers

    -


    The JBossESB can use any JMS compliant Messaging provider. Currently we have successfully

    tested JBossMessaging, JBossMQ, ActiveMQ, Websphere MQ Series (version 5.3 and 6.0) and OracleAQ There is no reason that any other JMS provider would not work. We simply did not have time

    to validate more then these for now.

     

    How can I configure them?

    -


    JMSListeners and JMSGateways can be configured to listen to a Queue or Topic. For

    this you can use the following parameters in their configuration (jbossesb-listener.xml

    and jbossesb-gateway.xml):

    • jndi-URL,

    • jndi-context-factory,

    • jndi-pkgprefix,

    • connection-factory,

    • destination-type and

    • destinationname.

     

    Furthermore you will need to add the client jms jars of the JMSprovider

    you want to use to the classpath.

     

    For some (all?) of the JMS vendors, you can integrate them into JBoss such that the JNDI tree natively used by JBoss is also where the JMS connection factories and queues are stored. In that scenario, you simply follow the instructions for JBossMQ / JBossMessaging below. Instructions on how to integrate a 3rd party JMS vendor in this way is not provided here but you should be able to find instructions with that vendor.

     

    In the following sections we will assume that your JMS provider runs on 'localhost',

    that the connection-factory is 'ConnectionFactory', that we are listenening to a

    destination-type 'queue' and that it's name is 'queue/A'.

    Note: Each JMSListener and JMSGateway can be configured to use it's

    own JMS provider, so you can use more then one provider in your

    deployment.

     

    JBossMQ or JBossMessaging

    -


    The settings for JBossMQ and JBossMessaging are identical and you should set the

    parameters to:

     

    jndi-context-factory="org.jnp.interfaces.NamingContextFactory"
    connection-factory="ConnectionFactory"
    destination-type="queue"
    destination-name="queue/A"
    

     

    For JBossMQ you should have jbossmq-client.jar,

    In your classpath. Not that this jar is included in jbossall-client.jar, which can be

    found in lib/ext. For JBossMessaging it should be jboss-messaging-client.jar

    While -for now- the JBossMQ is the default JMS provider in JBossAS, you can also

    use JBossMessaging. To setup JBossMessaging see the [screenshot document|

    http://wiki.jboss.org/wiki/attach?page=JBossESBDocumentation%2FJBESB-JBM.pdf].

    Note that the standalone esb-server is preconfigured with JBossMessaging.

     

    ActiveMQ

    -


    For ActiveMQ you should set the parameters to:

    jndi-URL="tcp://localhost:61616"
    jndi-contextfactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
    connection-factory="ConnectionFactory"
    destination-type="queue"
    destination-name="queue/A"
    

    In your classpath you should have activemq-core-4.x and backport-util-concurrent-2.1.jar

    Both jars can be found in lib/ext/jms/activemq. We tested with version 4.1.0-

    incubator.

     

    Websphere MQ Series

    -


    For Websphere MQ Series you should set the parameters to:

    jndi-URL="localhost:1414/SYSTEM.DEF.SVRCONN"
    jndi-contextfactory="com.ibm.mq.jms.context.WMQInitialContextFactory"
    connection-factory="ConnectionFactory"
    destination-type="queue"
    destination-name="QUEUEA"
    

    Note: Websphere likes all CAPS queue names and no slashes (QUEUEA),

    and the name of the Queue Manager in MQ should match what the value

    of 'connection-factory' is (or bind this name to JNDI). In our case we

    created a Queue Manager named �ConnectionFactory�.

    On your classpath you should have com.ibm.mq.pcf.jar, mqcontext.jar

    and the client jars: com.ibm.mq.jar, com.ibm.mqjms.jar.

    Please note that the client jars differ between MQ 5.3 and MQ 6.0. However the 6.0

    jars should be backward compatible. The jars are not open source, and are therefor not

    provided by us. You will have to obtain them from your WAS and MQ installs.

    Also note that you may get the following exception when running MQ 6.0, which can

    be fixed by adding the user that runs the jbossesb to the mqm group:

    Note that for MQ 6.0:

    Message:

    Unable to get a MQ series Queue Manager or Queue Connection. Reason:
    failed to create connection --javax.jms. JMSSecurityException: MQJMS2013: invalid
    security authentication supplied for MQQueueManager
    

    Explanation: There is a problem with user permissions or access.

    Tip: Make sure the user accessing MQ Queue Manager is part of the mqm group.

     

    OracleAQ

    -


    For Oracle AQ you should set the parameters to:

    connection-factory=�QueueConnectionFactory�

    and use the following properties:

    <property name="java.naming.factory.initial"
    value="org.jboss.soa.esb.oracle.aq.AQInitialContextFactory"></property>
    <property name="java.naming.oracle.aq.user" value="<user>"/>
    <property name="java.naming.oracle.aq.password" value="<pw>"/>
    <property name="java.naming.oracle.aq.server" value="<server>"/>
    <property name="java.naming.oracle.aq.instance" value="<instance>"/>
    <property name="java.naming.oracle.aq.schema" value="<schema>"/>
    <property name="java.naming.oracle.aq.port" value="1521"></property>
    <property name="java.naming.oracle.aq.driver" value="thin"></property>
    

    You may notice the reference to the InitialContext factory. You only need this is if

    you want to avoid OracelAQ to register its queues with an LDAP. The

    AqinitialContextFactory references code in a plugin jar that you can find in the

    plugins/org.jboss.soa.esb.oracle.aq direct ory. The jar is called

    org.jboss.soa.esb.oracle.aq-4.2.jar and you will have to deploy it to the

    jbossesb.sar/lib directory.

    Note that when creating a Queue in Oracle AQ make sure to select a payload type of

    SYS AQ$_JMS_MESSAGE.

    For a sample you can check the samples/quickstarts/helloworld_action/oracle-aq

    directory for an example jboss-esb. xml configuration file.