| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # |
| Qpid JCA Resource Adapter |
| |
| JBoss EAP 6.x Installation and Configuration Instructions |
| |
| Overview |
| ======== |
| The Qpid Resource Adapter is a JCA 1.5 compliant resource adapter that allows |
| for JEE integration between EE applications and AMQP 0.10 message brokers. |
| |
| The adapter provides both outbound and inbound connectivity and |
| exposes a variety of options to fine tune your messaging applications. |
| Currently the adapter only supports C++ based brokers and has only been tested with Apache Qpid C++ broker. |
| |
| The following document explains how to configure the resource adapter for deployment in JBoss EAP 6.x. |
| |
| Deployment |
| ========== |
| To deploy the Qpid JCA adapter in the JBoss EAP 6 environment, copy the qpid-ra-<version>.rar file |
| to your JBoss deployment directory. By default this can be found at |
| |
| JBOSS_ROOT/<server-config>/deployments |
| |
| where JBOSS_ROOT denotes the root directory of your JBoss EAP 6.x installation and <server-config> denotes the |
| particular server configuration for your applicationd development. Currently, JBoss EAP 6 provides two configurations |
| by default standalone and domain. This documentation assumes the standalone server configuration, though the process |
| to configure and deploy the Qpid JCA adapter is largely the same between the two. Assuming the standalone configuration |
| the deployment location above would be |
| |
| JBOSS_ROOT/standalone/deployments |
| |
| Note, as opposed to prior versions of EAP, copying a RAR file to the deployment location does not automatically |
| start and deploy the adapter. A separate manual configuration step is required which is explained in the following |
| section. |
| |
| Configuration |
| ============= |
| The EAP 6.x environment uses an XML based configuration scheme that is fundamentally different than prior versions |
| of EAP. As previously mentioned, EAP 6.x provides two server configuration types, standalone and domain. Each come with |
| a different set of configuration files that are tailored to varying types of server environments. Configuration locations |
| can be found at |
| |
| JBOSS_ROOT/<server-config>/configuration |
| |
| The varying XML files are named |
| |
| <server-config>-full.xml |
| <server-config>-full-ha.xml |
| <server-config>.xml |
| |
| where each XML file denotes the capabilites of the server. This document assumes a minimal server configuration in |
| the standalone server environment. While each configuration file provides a variety of options, this document is |
| only concerned with the configuration of the JCA adapter. Please consult the EAP 6.x documentation for other |
| options and configuration scenarios. |
| |
| The EAP 6.x infrastructure is built upon the notion of varying subsystem where subsystem generally corresponds |
| to one particular piece of functionality. Typical examples are EJB, JAXR etc. In order to configure the Qpid JCA adapter |
| we need to modify the ejb and resource-adapters subsystems in order to tell EAP 6.x about our RAR deployment as well |
| as the RAR that will provide JMS provider functionality. |
| |
| Note, JCA in EAP 6.x involves two subsystems, jca and resource-adapters. The former subsytem provides capabilities for |
| all JCA deployments (the JCA runtime environment) where the resource-adapters subsystem is particular to an invidual JCA |
| deployment. Here we are only concerned with the latter. Please consult the EAP 6.x documentation for more general JCA |
| configuration options as well as other subsystems. |
| |
| Each subsystem is configured in an XML fragment and is versioned separately. Subsystem versions will change over |
| time so this document may not reflect the most current version, but the Qpid JCA configuration options remain |
| unchanged across subsystem regardless of version or release date. |
| |
| The following XML fragment replaces the default messaging provider in the EAP 6.x environment |
| |
| <subsystem xmlns="urn:jboss:domain:ejb3:1.2"> |
| <session-bean> |
| <stateless> |
| <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/> |
| </stateless> |
| <stateful default-access-timeout="5000" cache-ref="simple"/> |
| <singleton default-access-timeout="5000"/> |
| </session-bean> |
| <mdb> |
| <resource-adapter-ref resource-adapter-name="qpid-ra-<rar-version>.rar"/> |
| <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/> |
| </mdb> |
| <pools> |
| <bean-instance-pools> |
| <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/> |
| <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/> |
| </bean-instance-pools> |
| </pools> |
| <caches> |
| <cache name="simple" aliases="NoPassivationCache"/> |
| <cache name="passivating" passivation-store-ref="file" aliases="SimpleStatefulCache"/> |
| </caches> |
| <passivation-stores> |
| <file-passivation-store name="file"/> |
| </passivation-stores> |
| <async thread-pool-name="default"/> |
| <timer-service thread-pool-name="default"> |
| <data-store path="timer-service-data" relative-to="jboss.server.data.dir"/> |
| </timer-service> |
| <remote connector-ref="remoting-connector" thread-pool-name="default"/> |
| <thread-pools> |
| <thread-pool name="default"> |
| <max-threads count="10"/> |
| <keepalive-time time="100" unit="milliseconds"/> |
| </thread-pool> |
| </thread-pools> |
| </subsystem> |
| |
| The only real lines we are concerned with are |
| |
| <mdb> |
| <resource-adapter-ref resource-adapter-name="qpid-ra-<rar-version>.rar"/> |
| <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/> |
| </mdb> |
| |
| however, the complete fragment is provided for clarity. |
| |
| The following XML fragment provides a minimal example configuration in the EAP 6 environment. Here we are configuring |
| an XA aware ManagedConnectionFactory and two JMS destinations (queue and topic) |
| |
| <subsystem xmlns="urn:jboss:domain:resource-adapters:1.0"> |
| <resource-adapters> |
| <resource-adapter> |
| <archive> |
| qpid-ra-<rar-version>.rar |
| </archive> |
| <transaction-support> |
| XATransaction |
| </transaction-support> |
| <config-property name="connectionURL"> |
| amqp://anonymous:passwd@client/test?brokerlist='tcp://localhost?sasl_mechs='PLAIN'' |
| </config-property> |
| <config-property name="TransactionManagerLocatorClass"> |
| org.apache.qpid.ra.tm.JBoss7TransactionManagerLocator |
| </config-property> |
| <config-property name="TransactionManagerLocatorMethod"> |
| getTm |
| </config-property> |
| <connection-definitions> |
| <connection-definition class-name="org.apache.qpid.ra.QpidRAManagedConnectionFactory" jndi-name="QpidJMSXA" pool-name="QpidJMSXA"> |
| <config-property name="connectionURL"> |
| amqp://anonymous:passwd@client/test?brokerlist='tcp://localhost?sasl_mechs='PLAIN'' |
| </config-property> |
| <config-property name="SessionDefaultType"> |
| javax.jms.Queue |
| </config-property> |
| </connection-definition> |
| </connection-definitions> |
| <admin-objects> |
| <admin-object class-name="org.apache.qpid.ra.admin.QpidTopicImpl" jndi-name="java:jboss/exported/GoodByeTopic" use-java-context="false" pool-name="GoodByeTopic"> |
| <config-property name="DestinationAddress"> |
| amq.topic/hello.Topic |
| </config-property> |
| </admin-object> |
| <admin-object class-name="org.apache.qpid.ra.admin.QpidQueueImpl" jndi-name="java:jboss/exported/HelloQueue" use-java-context="false" pool-name="HelloQueue"> |
| <config-property name="DestinationAddress"> |
| hello.Queue;{create:always, node:{type:queue, x-declare:{auto-delete:true}}} |
| </config-property> |
| </admin-object> |
| </admin-objects> |
| </resource-adapter> |
| </resource-adapters> |
| </subsystem> |
| |
| |
| |
| Note, while this document assumes that you are modifying the standalone.xml file directly, an alternative to this approach would be |
| to make a copy of the file, apply the modifications above and start the EAP instance with the new configuration |
| |
| JBOSS_HOME/bin/standalone.sh -c your-modified-config.xml |
| |
| Regardless of the approach that you use, once the modifications have been made you can start your EAP 6.x instance and the Qpid JCA |
| adapter will be deployed and ready for use. If property deployed and configured, you should see something in the log files or console |
| resembling the following: |
| |
| INFO [org.apache.qpid.ra.QpidResourceAdapter] (MSC service thread 1-4) Qpid resource adapter started |
| |
| |
| Notes |
| ===== |
| While the differences between the EAP 5.x and 6.x environments may appear to be dramatic, the configuration options and functionality of the Qpid |
| JCA adapter are not. The README.txt file outlines general configuration options that remain unchanged between the respective EAP environments. |
| |