commit
ff7dbff842
|
@ -20,10 +20,10 @@ on your client classpath.
|
||||||
## JMS Client
|
## JMS Client
|
||||||
|
|
||||||
If you are using JMS on the client side, then you will also need to
|
If you are using JMS on the client side, then you will also need to
|
||||||
include `activemq-jms-client.jar` and `jboss-jms-api.jar`.
|
include `activemq-jms-client.jar` and `geronimo-jms_2.0_spec.jar`.
|
||||||
|
|
||||||
> **Note**
|
> **Note**
|
||||||
>
|
>
|
||||||
> `jboss-jms-api.jar` just contains Java EE API interface classes needed
|
> `geronimo-jms_2.0_spec.jar` just contains Java EE API interface classes needed
|
||||||
> for the `javax.jms.*` classes. If you already have a jar with these
|
> for the `javax.jms.*` classes. If you already have a jar with these
|
||||||
> interface classes on your classpath, you will not need it.
|
> interface classes on your classpath, you will not need it.
|
||||||
|
|
|
@ -52,11 +52,6 @@ under the License.
|
||||||
<groupId>io.netty</groupId>
|
<groupId>io.netty</groupId>
|
||||||
<artifactId>netty-all</artifactId>
|
<artifactId>netty-all</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.javaee</groupId>
|
|
||||||
<artifactId>jboss-jms-api</artifactId>
|
|
||||||
<version>1.1.0.GA</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.geronimo.specs</groupId>
|
<groupId>org.apache.geronimo.specs</groupId>
|
||||||
<artifactId>geronimo-jms_2.0_spec</artifactId>
|
<artifactId>geronimo-jms_2.0_spec</artifactId>
|
||||||
|
|
|
@ -52,11 +52,6 @@ under the License.
|
||||||
<groupId>io.netty</groupId>
|
<groupId>io.netty</groupId>
|
||||||
<artifactId>netty-all</artifactId>
|
<artifactId>netty-all</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.javaee</groupId>
|
|
||||||
<artifactId>jboss-jms-api</artifactId>
|
|
||||||
<version>1.1.0.GA</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.geronimo.specs</groupId>
|
<groupId>org.apache.geronimo.specs</groupId>
|
||||||
<artifactId>geronimo-jms_2.0_spec</artifactId>
|
<artifactId>geronimo-jms_2.0_spec</artifactId>
|
||||||
|
|
|
@ -48,11 +48,6 @@ under the License.
|
||||||
<artifactId>netty-all</artifactId>
|
<artifactId>netty-all</artifactId>
|
||||||
<version>${netty.version}</version>
|
<version>${netty.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.javaee</groupId>
|
|
||||||
<artifactId>jboss-jms-api</artifactId>
|
|
||||||
<version>1.1.0.GA</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.activemq.examples.jms</groupId>
|
<groupId>org.apache.activemq.examples.jms</groupId>
|
||||||
<artifactId>activemq-jms-examples-common</artifactId>
|
<artifactId>activemq-jms-examples-common</artifactId>
|
||||||
|
@ -128,11 +123,6 @@ under the License.
|
||||||
<artifactId>netty-all</artifactId>
|
<artifactId>netty-all</artifactId>
|
||||||
<version>${netty.version}</version>
|
<version>${netty.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.javaee</groupId>
|
|
||||||
<artifactId>jboss-jms-api</artifactId>
|
|
||||||
<version>1.1.0.GA</version>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
|
|
|
@ -57,9 +57,8 @@ under the License.
|
||||||
<version>${netty.version}</version>
|
<version>${netty.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.jboss.javaee</groupId>
|
<groupId>org.apache.geronimo.specs</groupId>
|
||||||
<artifactId>jboss-jms-api</artifactId>
|
<artifactId>geronimo-jms_2.0_spec</artifactId>
|
||||||
<version>1.1.0.GA</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.geronimo.specs</groupId>
|
<groupId>org.apache.geronimo.specs</groupId>
|
||||||
|
@ -158,11 +157,6 @@ under the License.
|
||||||
<artifactId>netty-all</artifactId>
|
<artifactId>netty-all</artifactId>
|
||||||
<version>${netty.version}</version>
|
<version>${netty.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.javaee</groupId>
|
|
||||||
<artifactId>jboss-jms-api</artifactId>
|
|
||||||
<version>1.1.0.GA</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.vertx</groupId>
|
<groupId>io.vertx</groupId>
|
||||||
<artifactId>vertx-core</artifactId>
|
<artifactId>vertx-core</artifactId>
|
||||||
|
|
|
@ -54,10 +54,6 @@ under the License.
|
||||||
<groupId>org.apache.geronimo.specs</groupId>
|
<groupId>org.apache.geronimo.specs</groupId>
|
||||||
<artifactId>geronimo-ejb_3.0_spec</artifactId>
|
<artifactId>geronimo-ejb_3.0_spec</artifactId>
|
||||||
</exclusion>
|
</exclusion>
|
||||||
<exclusion>
|
|
||||||
<groupId>jboss.jbossts.jts</groupId>
|
|
||||||
<artifactId>jbossjts-jacorb</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
@ -140,7 +140,6 @@ under the License.
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.geronimo.specs</groupId>
|
<groupId>org.apache.geronimo.specs</groupId>
|
||||||
<artifactId>geronimo-jms_2.0_spec</artifactId>
|
<artifactId>geronimo-jms_2.0_spec</artifactId>
|
||||||
<version>${geronimo.jms.2.spec.version}</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<configuration>
|
<configuration>
|
||||||
|
|
|
@ -30,7 +30,7 @@ under the License.
|
||||||
|
|
||||||
<applet code="org.apache.activemq.jms.example.AppletExample.class"
|
<applet code="org.apache.activemq.jms.example.AppletExample.class"
|
||||||
codebase="build/classes/"
|
codebase="build/classes/"
|
||||||
archive="activemq-core-client.jar,activemq-jms-client.jar,jboss-jms-api.jar,netty.jar"
|
archive="activemq-core-client.jar,activemq-jms-client.jar,geronimo-jms_2.0_spec.jar,netty.jar"
|
||||||
width="640" height="480"></applet>
|
width="640" height="480"></applet>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -70,8 +70,6 @@ under the License.
|
||||||
<goal>start</goal>
|
<goal>start</goal>
|
||||||
</goals>
|
</goals>
|
||||||
<configuration>
|
<configuration>
|
||||||
<jndiPort>1199</jndiPort>
|
|
||||||
<jndiRmiPort>1198</jndiRmiPort>
|
|
||||||
<configurationDir>${basedir}/target/classes/activemq/server1</configurationDir>
|
<configurationDir>${basedir}/target/classes/activemq/server1</configurationDir>
|
||||||
<fork>true</fork>
|
<fork>true</fork>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|
|
@ -71,8 +71,6 @@ under the License.
|
||||||
<goal>start</goal>
|
<goal>start</goal>
|
||||||
</goals>
|
</goals>
|
||||||
<configuration>
|
<configuration>
|
||||||
<jndiPort>1199</jndiPort>
|
|
||||||
<jndiRmiPort>1198</jndiRmiPort>
|
|
||||||
<configurationDir>${basedir}/target/classes/activemq/server1</configurationDir>
|
<configurationDir>${basedir}/target/classes/activemq/server1</configurationDir>
|
||||||
<fork>true</fork>
|
<fork>true</fork>
|
||||||
<systemProperties>
|
<systemProperties>
|
||||||
|
|
|
@ -118,7 +118,12 @@ under the License.
|
||||||
InitialContext sourceContext = createContext(sourceServer);
|
InitialContext sourceContext = createContext(sourceServer);
|
||||||
InitialContext targetContext = createContext(targetServer);
|
InitialContext targetContext = createContext(targetServer);
|
||||||
</pre>
|
</pre>
|
||||||
<li>We then create a JMS Bridge and start it, Note, the Bridge needs a transaction manager, in this instance we will use the JBoss TM</li>
|
<li>We then create a JMS Bridge and start it, Note, for certain quality of service modes such as
|
||||||
|
ONCE_AND_ONCE_ONLY and AT_LEAST_ONCE a Transaction Manager is required to ensure Messages are delivered
|
||||||
|
accordingly. A Transaction Manager can be either loaded via implementation of TransactionManagerLocator intefer
|
||||||
|
and loaded via standard a ServiceLoader or by explicitly setting an instance of a Transaction Manager on the
|
||||||
|
bridge using setTranscationManager(TransactionManager tm) method. In this example we'll be using the DUPLICATES_OK
|
||||||
|
quality of service so there is no need for a Transaction Manager.
|
||||||
<pre class="prettyprint">
|
<pre class="prettyprint">
|
||||||
JMSBridge jmsBridge = new JMSBridgeImpl(
|
JMSBridge jmsBridge = new JMSBridgeImpl(
|
||||||
new JNDIConnectionFactoryFactory(sourceJndiParams, "source/ConnectionFactory"),
|
new JNDIConnectionFactoryFactory(sourceJndiParams, "source/ConnectionFactory"),
|
||||||
|
@ -132,13 +137,12 @@ under the License.
|
||||||
null,
|
null,
|
||||||
5000,
|
5000,
|
||||||
10,
|
10,
|
||||||
QualityOfServiceMode.ONCE_AND_ONLY_ONCE,
|
QualityOfServiceMode.DUPLICATES_OK,
|
||||||
1,
|
1,
|
||||||
-1,
|
-1,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
true);
|
true);
|
||||||
jmsBridge.setTransactionManager(new TransactionManagerImple());
|
|
||||||
....
|
....
|
||||||
jmsBridge.start();
|
jmsBridge.start();
|
||||||
</pre>
|
</pre>
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.activemq.jms.example;
|
package org.apache.activemq.jms.example;
|
||||||
|
|
||||||
import com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple;
|
|
||||||
import org.apache.activemq.jms.bridge.JMSBridge;
|
import org.apache.activemq.jms.bridge.JMSBridge;
|
||||||
import org.apache.activemq.jms.bridge.QualityOfServiceMode;
|
import org.apache.activemq.jms.bridge.QualityOfServiceMode;
|
||||||
import org.apache.activemq.jms.bridge.impl.JMSBridgeImpl;
|
import org.apache.activemq.jms.bridge.impl.JMSBridgeImpl;
|
||||||
|
@ -77,13 +76,12 @@ public class JMSBridgeExample
|
||||||
null,
|
null,
|
||||||
5000,
|
5000,
|
||||||
10,
|
10,
|
||||||
QualityOfServiceMode.ONCE_AND_ONLY_ONCE,
|
QualityOfServiceMode.DUPLICATES_OK,
|
||||||
1,
|
1,
|
||||||
-1,
|
-1,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
true);
|
true);
|
||||||
jmsBridge.setTransactionManager(new TransactionManagerImple());
|
|
||||||
|
|
||||||
Connection sourceConnection = null;
|
Connection sourceConnection = null;
|
||||||
Connection targetConnection = null;
|
Connection targetConnection = null;
|
||||||
|
|
|
@ -49,9 +49,8 @@ under the License.
|
||||||
<version>${netty.version}</version>
|
<version>${netty.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.jboss.javaee</groupId>
|
<groupId>org.apache.geronimo.specs</groupId>
|
||||||
<artifactId>jboss-jms-api</artifactId>
|
<artifactId>geronimo-jms_2.0_spec</artifactId>
|
||||||
<version>1.1.0.GA</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.activemq.examples.jms</groupId>
|
<groupId>org.apache.activemq.examples.jms</groupId>
|
||||||
|
@ -129,9 +128,8 @@ under the License.
|
||||||
<version>${netty.version}</version>
|
<version>${netty.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.jboss.javaee</groupId>
|
<groupId>org.apache.geronimo.specs</groupId>
|
||||||
<artifactId>jboss-jms-api</artifactId>
|
<artifactId>geronimo-jms_2.0_spec</artifactId>
|
||||||
<version>1.1.0.GA</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
|
@ -128,7 +128,6 @@ under the License.
|
||||||
<module>xa-heuristic</module>
|
<module>xa-heuristic</module>
|
||||||
<module>xa-receive</module>
|
<module>xa-receive</module>
|
||||||
<module>xa-send</module>
|
<module>xa-send</module>
|
||||||
<module>xa-with-jta</module>
|
|
||||||
</modules>
|
</modules>
|
||||||
</profile>
|
</profile>
|
||||||
<profile>
|
<profile>
|
||||||
|
|
|
@ -48,11 +48,6 @@ under the License.
|
||||||
<artifactId>netty-all</artifactId>
|
<artifactId>netty-all</artifactId>
|
||||||
<version>${netty.version}</version>
|
<version>${netty.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.javaee</groupId>
|
|
||||||
<artifactId>jboss-jms-api</artifactId>
|
|
||||||
<version>1.1.0.GA</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.geronimo.specs</groupId>
|
<groupId>org.apache.geronimo.specs</groupId>
|
||||||
<artifactId>geronimo-jms_2.0_spec</artifactId>
|
<artifactId>geronimo-jms_2.0_spec</artifactId>
|
||||||
|
@ -130,9 +125,8 @@ under the License.
|
||||||
<version>${netty.version}</version>
|
<version>${netty.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.jboss.javaee</groupId>
|
<groupId>org.apache.geronimo.specs</groupId>
|
||||||
<artifactId>jboss-jms-api</artifactId>
|
<artifactId>geronimo-jms_2.0_spec</artifactId>
|
||||||
<version>1.1.0.GA</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
|
@ -75,8 +75,6 @@ under the License.
|
||||||
<goal>start</goal>
|
<goal>start</goal>
|
||||||
</goals>
|
</goals>
|
||||||
<configuration>
|
<configuration>
|
||||||
<jndiPort>1199</jndiPort>
|
|
||||||
<jndiRmiPort>1198</jndiRmiPort>
|
|
||||||
<configurationDir>${basedir}/target/classes/activemq/server1</configurationDir>
|
<configurationDir>${basedir}/target/classes/activemq/server1</configurationDir>
|
||||||
<fork>true</fork>
|
<fork>true</fork>
|
||||||
<systemProperties>
|
<systemProperties>
|
||||||
|
|
|
@ -42,11 +42,6 @@ under the License.
|
||||||
<groupId>org.apache.geronimo.specs</groupId>
|
<groupId>org.apache.geronimo.specs</groupId>
|
||||||
<artifactId>geronimo-jms_2.0_spec</artifactId>
|
<artifactId>geronimo-jms_2.0_spec</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.jbossts.jts</groupId>
|
|
||||||
<artifactId>jbossjts-jacorb</artifactId>
|
|
||||||
<version>4.17.4.Final</version>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
|
@ -1,142 +0,0 @@
|
||||||
<?xml version='1.0'?>
|
|
||||||
<!--
|
|
||||||
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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
|
|
||||||
<parent>
|
|
||||||
<groupId>org.apache.activemq.examples.jms</groupId>
|
|
||||||
<artifactId>jms-examples</artifactId>
|
|
||||||
<version>6.0.0-SNAPSHOT</version>
|
|
||||||
</parent>
|
|
||||||
|
|
||||||
<artifactId>activemq-jms-xa-with-jta-example</artifactId>
|
|
||||||
<packaging>jar</packaging>
|
|
||||||
<name>ActiveMQ6 JMS XA with JTA Example</name>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.activemq.examples.jms</groupId>
|
|
||||||
<artifactId>activemq-jms-examples-common</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.geronimo.specs</groupId>
|
|
||||||
<artifactId>geronimo-jms_2.0_spec</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.geronimo.specs</groupId>
|
|
||||||
<artifactId>geronimo-ejb_3.0_spec</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.jbossts</groupId>
|
|
||||||
<artifactId>jbossjta</artifactId>
|
|
||||||
<version>4.16.4.Final</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.geronimo.specs</groupId>
|
|
||||||
<artifactId>geronimo-jta_1.1_spec</artifactId>
|
|
||||||
<version>1.1.1</version>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.activemq</groupId>
|
|
||||||
<artifactId>activemq-maven-plugin</artifactId>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>start</id>
|
|
||||||
<goals>
|
|
||||||
<goal>start</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<systemProperties>
|
|
||||||
<property>
|
|
||||||
<name>build.directory</name>
|
|
||||||
<value>${basedir}/target/</value>
|
|
||||||
</property>
|
|
||||||
</systemProperties>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
<execution>
|
|
||||||
<id>runClient</id>
|
|
||||||
<goals>
|
|
||||||
<goal>runClient</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<clientClass>org.apache.activemq.jms.example.XAwithJTAExample</clientClass>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
<execution>
|
|
||||||
<id>stop</id>
|
|
||||||
<goals>
|
|
||||||
<goal>stop</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.activemq.examples.jms</groupId>
|
|
||||||
<artifactId>activemq-jms-xa-with-jta-example</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.activemq</groupId>
|
|
||||||
<artifactId>activemq-core-client</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.activemq</groupId>
|
|
||||||
<artifactId>activemq-server</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.activemq</groupId>
|
|
||||||
<artifactId>activemq-jms-client</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.activemq</groupId>
|
|
||||||
<artifactId>activemq-jms-server</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.netty</groupId>
|
|
||||||
<artifactId>netty-all</artifactId>
|
|
||||||
<version>${netty.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.geronimo.specs</groupId>
|
|
||||||
<artifactId>geronimo-jms_2.0_spec</artifactId>
|
|
||||||
<version>${geronimo.jms.2.spec.version}</version>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
<configuration>
|
|
||||||
<waitOnStart>false</waitOnStart>
|
|
||||||
<configurationDir>${basedir}/target/classes/activemq/server0</configurationDir>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
|
|
||||||
</project>
|
|
|
@ -1,220 +0,0 @@
|
||||||
<!--
|
|
||||||
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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>ActiveMQ JMS XA with JTA Example</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../common/common.css" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../common/prettify.css" />
|
|
||||||
<script type="text/javascript" src="../common/prettify.js"></script>
|
|
||||||
</head>
|
|
||||||
<body onload="prettyPrint()">
|
|
||||||
<h1>JMS XA with JTA Example</h1>
|
|
||||||
|
|
||||||
<p>This example shows you how to use JTA interfaces to control transactions with ActiveMQ. JTA provides
|
|
||||||
facilities to start and stop a transaction and enlist XA resources into a transaction.</p>
|
|
||||||
|
|
||||||
<p>ActiveMQ is JTA aware, meaning you can use ActiveMQ in a XA transactional environment
|
|
||||||
and participate in XA transactions. It provides the javax.transaction.xa.XAResource interface for that
|
|
||||||
purpose. Users can get a XAConnectionFactory to create XAConnections and XASessions.</p>
|
|
||||||
|
|
||||||
<p>In this example we get a transaction manager from JBoss JTA to control the transactions. First we create an XASession
|
|
||||||
for receiving and a normal session for sending. Then we start a new xa transaction and enlist the receiving
|
|
||||||
XASession through its XAResource. We then send two words, 'hello' and 'world', receive them, and let the
|
|
||||||
transaction roll back. The received messages are cancelled back to the queue. Next we start
|
|
||||||
a new transaction with the same XAResource enlisted, but this time we commit the transaction after receiving the
|
|
||||||
messages. Then we check that no more messages are to be received. In each transaction a dummy XAResource is also
|
|
||||||
enlisted to show the transaction processing information.</p>
|
|
||||||
|
|
||||||
<h2>Example step-by-step</h2>
|
|
||||||
<p><i>To run the example, simply type <code>mvn verify</code> from this directory. It will download the JBoss JTA jars before
|
|
||||||
it launches the example.</i></p>
|
|
||||||
|
|
||||||
<ol>
|
|
||||||
<li>First we need to get an initial context so we can look-up the JMS connection factory and destination objects from JNDI. This initial context will get it's properties from the <code>client-jndi.properties</code> file in the directory <code>../common/config</code></li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>InitialContext initialContext = getContext(0);</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We look-up the JMS queue object from JNDI</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>Queue queue = (Queue) initialContext.lookup("/queue/exampleQueue");</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We perform a lookup on the XA Connection Factory</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>XAConnectionFactory cf = (XAConnectionFactory) initialContext.lookup("/XAConnectionFactory");</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We create a JMS XAConnection</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>connection = cf.createXAConnection();</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We Start the connection</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>connection.start();</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We create a JMS XASession</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>XASession xaSession = connection.createXASession();</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We create a normal session</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>Session normalSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We create a normal Message Producer</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>
|
|
||||||
MessageProducer normalProducer = normalSession.createProducer(queue);
|
|
||||||
</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We get the JMS Session</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>Session session = xaSession.getSession();</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We create a message consumer</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>MessageConsumer xaConsumer = session.createConsumer(queue); </code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We create two Text Messages</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>
|
|
||||||
TextMessage helloMessage = session.createTextMessage("hello");
|
|
||||||
TextMessage worldMessage = session.createTextMessage("world");
|
|
||||||
</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We get the Transaction Manager</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>javax.transaction.TransactionManager txMgr = TransactionManager.transactionManager();</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We start a transaction</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>txMgr.begin();</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We get the JMS XAResource</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>XAResource xaRes = xaSession.getXAResource();</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We enlist the resources in the Transaction work</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>
|
|
||||||
Transaction transaction = txMgr.getTransaction();
|
|
||||||
transaction.enlistResource(new DummyXAResource());
|
|
||||||
transaction.enlistResource(xaRes);
|
|
||||||
</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We send two messages.</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>
|
|
||||||
normalProducer.send(helloMessage);
|
|
||||||
normalProducer.send(worldMessage);
|
|
||||||
</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We receive the messages</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>
|
|
||||||
TextMessage rm1 = (TextMessage)xaConsumer.receive();
|
|
||||||
System.out.println("Message received: " + rm1.getText());
|
|
||||||
TextMessage rm2 = (TextMessage)xaConsumer.receive();
|
|
||||||
System.out.println("Message received: " + rm2.getText());
|
|
||||||
</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We roll back the transaction</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>txMgr.rollback();</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We create another transaction </li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>
|
|
||||||
txMgr.begin();
|
|
||||||
transaction = txMgr.getTransaction();
|
|
||||||
</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We enlist the resources to start the transaction work</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>
|
|
||||||
transaction.enlistResource(new DummyXAResource());
|
|
||||||
transaction.enlistResource(xaRes);
|
|
||||||
</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We receive those messages again</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>
|
|
||||||
rm1 = (TextMessage)xaConsumer.receive();
|
|
||||||
System.out.println("Message received again: " + rm1.getText());
|
|
||||||
rm2 = (TextMessage)xaConsumer.receive();
|
|
||||||
System.out.println("Message received again: " + rm2.getText());
|
|
||||||
</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We commit</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>txMgr.commit();</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>We check that no more messages are received.</li>
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>
|
|
||||||
TextMessage rm3 = (TextMessage)xaConsumer.receive(2000);
|
|
||||||
if (rm3 == null)
|
|
||||||
{
|
|
||||||
System.out.println("No message received after commit.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = false;
|
|
||||||
}
|
|
||||||
</code>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<li>And finally, <b>always</b> remember to close your JMS connections and resources after use, in a <code>finally</code> block. Closing a JMS connection will automatically close all of its sessions, consumers, producer and browser objects</li>
|
|
||||||
|
|
||||||
<pre class="prettyprint">
|
|
||||||
<code>finally
|
|
||||||
{
|
|
||||||
if (initialContext != null)
|
|
||||||
{
|
|
||||||
initialContext.close();
|
|
||||||
}
|
|
||||||
if (connection != null)
|
|
||||||
{
|
|
||||||
connection.close();
|
|
||||||
}
|
|
||||||
}</code>
|
|
||||||
</pre>
|
|
||||||
</ol>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,222 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
package org.apache.activemq.jms.example;
|
|
||||||
|
|
||||||
import javax.jms.MessageConsumer;
|
|
||||||
import javax.jms.MessageProducer;
|
|
||||||
import javax.jms.Queue;
|
|
||||||
import javax.jms.Session;
|
|
||||||
import javax.jms.TextMessage;
|
|
||||||
import javax.jms.XAConnection;
|
|
||||||
import javax.jms.XAConnectionFactory;
|
|
||||||
import javax.jms.XASession;
|
|
||||||
import javax.naming.InitialContext;
|
|
||||||
import javax.transaction.Transaction;
|
|
||||||
import javax.transaction.xa.XAException;
|
|
||||||
import javax.transaction.xa.XAResource;
|
|
||||||
import javax.transaction.xa.Xid;
|
|
||||||
|
|
||||||
import com.arjuna.ats.jta.TransactionManager;
|
|
||||||
|
|
||||||
import org.apache.activemq.common.example.ActiveMQExample;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A simple JMS example showing the ActiveMQ XA support with JTA.
|
|
||||||
*
|
|
||||||
* @author <a href="hgao@redhat.com">Howard Gao</a>
|
|
||||||
*/
|
|
||||||
public class XAwithJTAExample extends ActiveMQExample
|
|
||||||
{
|
|
||||||
private volatile boolean result = true;
|
|
||||||
|
|
||||||
public static void main(final String[] args)
|
|
||||||
{
|
|
||||||
new XAwithJTAExample().run(args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean runExample() throws Exception
|
|
||||||
{
|
|
||||||
XAConnection connection = null;
|
|
||||||
InitialContext initialContext = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// Step 1. Create an initial context to perform the JNDI lookup.
|
|
||||||
initialContext = new InitialContext();
|
|
||||||
|
|
||||||
// Step 2. Lookup on the queue
|
|
||||||
Queue queue = (Queue)initialContext.lookup("queue/exampleQueue");
|
|
||||||
|
|
||||||
// Step 3. Perform a lookup on the XA Connection Factory
|
|
||||||
XAConnectionFactory cf = (XAConnectionFactory)initialContext.lookup("XAConnectionFactory");
|
|
||||||
|
|
||||||
// Step 4.Create a JMS XAConnection
|
|
||||||
connection = cf.createXAConnection();
|
|
||||||
|
|
||||||
// Step 5. Start the connection
|
|
||||||
connection.start();
|
|
||||||
|
|
||||||
// Step 6. Create a JMS XASession
|
|
||||||
XASession xaSession = connection.createXASession();
|
|
||||||
|
|
||||||
// Step 7. Create a normal session
|
|
||||||
Session normalSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
|
|
||||||
|
|
||||||
// Step 8. Create a normal Message Producer
|
|
||||||
MessageProducer normalProducer = normalSession.createProducer(queue);
|
|
||||||
|
|
||||||
// Step 9. Get the JMS Session
|
|
||||||
Session session = xaSession.getSession();
|
|
||||||
|
|
||||||
// Step 10. Create a message consumer
|
|
||||||
MessageConsumer xaConsumer = session.createConsumer(queue);
|
|
||||||
|
|
||||||
// Step 11. Create two Text Messages
|
|
||||||
TextMessage helloMessage = session.createTextMessage("hello");
|
|
||||||
TextMessage worldMessage = session.createTextMessage("world");
|
|
||||||
|
|
||||||
// Step 12. Get the Transaction Manager
|
|
||||||
javax.transaction.TransactionManager txMgr = TransactionManager.transactionManager();
|
|
||||||
|
|
||||||
// Step 13. Start a transaction
|
|
||||||
txMgr.begin();
|
|
||||||
|
|
||||||
// Step 14. Get the JMS XAResource
|
|
||||||
XAResource xaRes = xaSession.getXAResource();
|
|
||||||
|
|
||||||
// Step 15. enlist the resource in the Transaction work
|
|
||||||
Transaction transaction = txMgr.getTransaction();
|
|
||||||
transaction.enlistResource(new DummyXAResource());
|
|
||||||
transaction.enlistResource(xaRes);
|
|
||||||
|
|
||||||
// Step 16. Send two messages.
|
|
||||||
normalProducer.send(helloMessage);
|
|
||||||
normalProducer.send(worldMessage);
|
|
||||||
|
|
||||||
// Step 17. Receive the message
|
|
||||||
TextMessage rm1 = (TextMessage)xaConsumer.receive();
|
|
||||||
System.out.println("Message received: " + rm1.getText());
|
|
||||||
TextMessage rm2 = (TextMessage)xaConsumer.receive();
|
|
||||||
System.out.println("Message received: " + rm2.getText());
|
|
||||||
|
|
||||||
// Step 18. Roll back the transaction
|
|
||||||
txMgr.rollback();
|
|
||||||
|
|
||||||
// Step 19. Create another transaction
|
|
||||||
txMgr.begin();
|
|
||||||
transaction = txMgr.getTransaction();
|
|
||||||
|
|
||||||
// Step 20. Enlist the resources to start the transaction work
|
|
||||||
transaction.enlistResource(new DummyXAResource());
|
|
||||||
transaction.enlistResource(xaRes);
|
|
||||||
|
|
||||||
// Step 21. receive those messages again
|
|
||||||
rm1 = (TextMessage)xaConsumer.receive();
|
|
||||||
System.out.println("Message received again: " + rm1.getText());
|
|
||||||
rm2 = (TextMessage)xaConsumer.receive();
|
|
||||||
System.out.println("Message received again: " + rm2.getText());
|
|
||||||
|
|
||||||
// Step 22. Commit!
|
|
||||||
txMgr.commit();
|
|
||||||
|
|
||||||
// Step 23. Check no more messages are received.
|
|
||||||
TextMessage rm3 = (TextMessage)xaConsumer.receive(2000);
|
|
||||||
if (rm3 == null)
|
|
||||||
{
|
|
||||||
System.out.println("No message received after commit.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
// Step 24. Be sure to close our JMS resources!
|
|
||||||
if (initialContext != null)
|
|
||||||
{
|
|
||||||
initialContext.close();
|
|
||||||
}
|
|
||||||
if (connection != null)
|
|
||||||
{
|
|
||||||
connection.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class DummyXAResource implements XAResource
|
|
||||||
{
|
|
||||||
|
|
||||||
public DummyXAResource()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void commit(final Xid xid, final boolean arg1) throws XAException
|
|
||||||
{
|
|
||||||
System.out.println("DummyXAResource commit() called, xid: " + xid);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void end(final Xid xid, final int arg1) throws XAException
|
|
||||||
{
|
|
||||||
System.out.println("DummyXAResource end() called, xid: " + xid);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void forget(final Xid xid) throws XAException
|
|
||||||
{
|
|
||||||
System.out.println("DummyXAResource forget() called, xid: " + xid);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getTransactionTimeout() throws XAException
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isSameRM(final XAResource arg0) throws XAException
|
|
||||||
{
|
|
||||||
return this == arg0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int prepare(final Xid xid) throws XAException
|
|
||||||
{
|
|
||||||
return XAResource.XA_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Xid[] recover(final int arg0) throws XAException
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void rollback(final Xid xid) throws XAException
|
|
||||||
{
|
|
||||||
System.out.println("DummyXAResource rollback() called, xid: " + xid);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean setTransactionTimeout(final int arg0) throws XAException
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void start(final Xid xid, final int arg1) throws XAException
|
|
||||||
{
|
|
||||||
System.out.println("DummyXAResource start() called, Xid: " + xid);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,54 +0,0 @@
|
||||||
<?xml version='1.0'?>
|
|
||||||
<!--
|
|
||||||
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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<configuration xmlns="urn:activemq"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="urn:activemq /schema/activemq-configuration.xsd">
|
|
||||||
|
|
||||||
<bindings-directory>${build.directory}/server0/data/messaging/bindings</bindings-directory>
|
|
||||||
|
|
||||||
<journal-directory>${build.directory}/server0/data/messaging/journal</journal-directory>
|
|
||||||
|
|
||||||
<large-messages-directory>${build.directory}/server0/data/messaging/largemessages</large-messages-directory>
|
|
||||||
|
|
||||||
<paging-directory>${build.directory}/server0/data/messaging/paging</paging-directory>
|
|
||||||
|
|
||||||
<!-- Acceptors -->
|
|
||||||
<acceptors>
|
|
||||||
<acceptor name="netty-acceptor">
|
|
||||||
<factory-class>org.apache.activemq.core.remoting.impl.netty.NettyAcceptorFactory</factory-class>
|
|
||||||
</acceptor>
|
|
||||||
</acceptors>
|
|
||||||
|
|
||||||
<!-- Other config -->
|
|
||||||
|
|
||||||
<security-settings>
|
|
||||||
<!--security for example queue-->
|
|
||||||
<security-setting match="jms.queue.exampleQueue">
|
|
||||||
<permission type="createDurableQueue" roles="guest"/>
|
|
||||||
<permission type="deleteDurableQueue" roles="guest"/>
|
|
||||||
<permission type="createNonDurableQueue" roles="guest"/>
|
|
||||||
<permission type="deleteNonDurableQueue" roles="guest"/>
|
|
||||||
<permission type="consume" roles="guest"/>
|
|
||||||
<permission type="send" roles="guest"/>
|
|
||||||
</security-setting>
|
|
||||||
</security-settings>
|
|
||||||
|
|
||||||
</configuration>
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version='1.0'?>
|
|
||||||
<!--
|
|
||||||
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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<configuration xmlns="urn:activemq"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="urn:activemq /schema/activemq-jms.xsd">
|
|
||||||
|
|
||||||
<!--the queue used by the example-->
|
|
||||||
<queue name="exampleQueue"/>
|
|
||||||
|
|
||||||
</configuration>
|
|
|
@ -1,27 +0,0 @@
|
||||||
<?xml version='1.0'?>
|
|
||||||
<!--
|
|
||||||
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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<configuration xmlns="urn:activemq" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="urn:activemq /schema/activemq-users.xsd">
|
|
||||||
<!-- the default user. this is used where username is null-->
|
|
||||||
<defaultuser name="guest" password="guest">
|
|
||||||
<role name="guest"/>
|
|
||||||
</defaultuser>
|
|
||||||
</configuration>
|
|
|
@ -1,175 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
|
|
||||||
<!--
|
|
||||||
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.
|
|
||||||
-->
|
|
||||||
<properties>
|
|
||||||
<!--
|
|
||||||
This is the JBossTS configuration file for running ArjunaJTS.
|
|
||||||
It should be called jbossts-properties.xml.
|
|
||||||
You need a different version for ArjunaCore or JTA usage.
|
|
||||||
|
|
||||||
***************************
|
|
||||||
|
|
||||||
Property values may be literals or be tokens of the form ${p1[,p2][:v]}
|
|
||||||
in which case the token values are substituted for the values of the corresponding system
|
|
||||||
properties as follows:
|
|
||||||
|
|
||||||
- Any occurrence of ${p} with the System.getProperty(p) value.
|
|
||||||
If there is no such property p defined, then the ${p} reference will remain unchanged.
|
|
||||||
|
|
||||||
- If the property reference is of the form ${p:v} and there is no such property p,
|
|
||||||
then the default value v will be returned.
|
|
||||||
|
|
||||||
- If the property reference is of the form ${p1,p2} or ${p1,p2:v} then
|
|
||||||
the primary and the secondary properties will be tried in turn, before
|
|
||||||
returning either the unchanged input, or the default value.
|
|
||||||
|
|
||||||
The property ${/} is replaced with System.getProperty("file.separator")
|
|
||||||
value and the property ${:} is replaced with System.getProperty("path.separator").
|
|
||||||
|
|
||||||
Note this substitution applies to property values only at the point they are read from
|
|
||||||
the config file. Tokens in system properties won't be substituted.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- (default is YES) -->
|
|
||||||
<entry key="CoordinatorEnvironmentBean.commitOnePhase">YES</entry>
|
|
||||||
|
|
||||||
<!-- default is under user.home - must be writeable!) -->
|
|
||||||
<entry key="ObjectStoreEnvironmentBean.objectStoreDir">PutObjectStoreDirHere</entry>
|
|
||||||
|
|
||||||
<!-- (default is ON) -->
|
|
||||||
<entry key="ObjectStoreEnvironmentBean.transactionSync">ON</entry>
|
|
||||||
|
|
||||||
<!-- (Must be unique across all Arjuna instances.) -->
|
|
||||||
<entry key="CoreEnvironmentBean.nodeIdentifier">1</entry>
|
|
||||||
|
|
||||||
<!-- Which Xid types to recover -->
|
|
||||||
<entry key="JTAEnvironmentBean.xaRecoveryNodes">1</entry>
|
|
||||||
|
|
||||||
<entry key="JTAEnvironmentBean.xaResourceOrphanFilterClassNames">
|
|
||||||
com.arjuna.ats.internal.jta.recovery.arjunacore.JTATransactionLogXAResourceOrphanFilter
|
|
||||||
com.arjuna.ats.internal.jta.recovery.arjunacore.JTANodeNameXAResourceOrphanFilter
|
|
||||||
</entry>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Base port number for determining a unique number to associate with an instance of the transaction service
|
|
||||||
(which is needed in order to support multiple instances on the same machine).
|
|
||||||
Use the value 0 to allow the system to select the first available port number.
|
|
||||||
If the port number is non-zero and the port is in use then the value will be incremented until either a successful binding
|
|
||||||
to the loopback address is created or until the the maximum number of ports (specified by the
|
|
||||||
CoreEnvironmentBean.socketProcessIdMaxPorts property) have been tried or until the port number
|
|
||||||
reaches the maximum possible port number.
|
|
||||||
-->
|
|
||||||
<entry key="CoreEnvironmentBean.socketProcessIdPort">0</entry>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Periodic recovery modules to use. Invoked in the order they appear in the list.
|
|
||||||
Check http://www.jboss.org/community/docs/DOC-10788 for more information
|
|
||||||
on recovery modules and their configuration when running in various
|
|
||||||
deployments.
|
|
||||||
-->
|
|
||||||
<entry key="RecoveryEnvironmentBean.recoveryModuleClassNames">
|
|
||||||
com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule
|
|
||||||
com.arjuna.ats.internal.txoj.recovery.TORecoveryModule
|
|
||||||
com.arjuna.ats.internal.jts.recovery.transactions.TopLevelTransactionRecoveryModule
|
|
||||||
com.arjuna.ats.internal.jts.recovery.transactions.ServerTransactionRecoveryModule
|
|
||||||
com.arjuna.ats.internal.jta.recovery.jts.XARecoveryModule
|
|
||||||
</entry>
|
|
||||||
|
|
||||||
<!-- Expiry scanners to use (order of invocation is random). -->
|
|
||||||
<entry key="RecoveryEnvironmentBean.expiryScannerClassNames">
|
|
||||||
com.arjuna.ats.internal.arjuna.recovery.ExpiredTransactionStatusManagerScanner
|
|
||||||
com.arjuna.ats.internal.jts.recovery.contact.ExpiredContactScanner
|
|
||||||
com.arjuna.ats.internal.jts.recovery.transactions.ExpiredToplevelScanner
|
|
||||||
com.arjuna.ats.internal.jts.recovery.transactions.ExpiredServerScanner
|
|
||||||
</entry>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Add the following to the set of expiryScannerClassNames above to move logs that cannot be completed by failure recovery.
|
|
||||||
But be sure you know what you are doing and why!
|
|
||||||
com.arjuna.ats.internal.arjuna.recovery.AtomicActionExpiryScanner
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!--
|
|
||||||
The address and port number on which the recovery manager listens
|
|
||||||
If running within an AS then the address the AS is bound to (jboss.bind.address) takes precedence
|
|
||||||
-->
|
|
||||||
<entry key="RecoveryEnvironmentBean.recoveryPort">4712</entry>
|
|
||||||
|
|
||||||
<entry key="RecoveryEnvironmentBean.recoveryAddress"></entry>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Use this to fix the port on which the TransactionStatusManager listens,
|
|
||||||
The default behaviour is to use any free port.
|
|
||||||
-->
|
|
||||||
<entry key="RecoveryEnvironmentBean.transactionStatusManagerPort">0</entry>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Use this to fix the address on which the TransactionStatusManager binds,
|
|
||||||
The default behaviour is to use the loopback address (ie localhost).
|
|
||||||
If running within an AS then the address the AS is bound to (jboss.bind.address) takes precedence
|
|
||||||
-->
|
|
||||||
<entry key="RecoveryEnvironmentBean.transactionStatusManagerAddress"></entry>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
For cases where the recovery manager is in process with the transaction manager and nothing else uses
|
|
||||||
the ObjectStore, it is possible to disable the socket based recovery listener by setting this to NO.
|
|
||||||
Caution: use of this property can allow multiple recovery processes to run on the same ObjectStore
|
|
||||||
if you are not careful. That in turn can lead to incorrect transaction processing. Use with care.
|
|
||||||
-->
|
|
||||||
<entry key="RecoveryEnvironmentBean.recoveryListener">YES</entry>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Recovery Activators to use. -->
|
|
||||||
<entry key="RecoveryEnvironmentBean.recoveryActivatorClassNames">com.arjuna.ats.internal.jts.orbspecific.recovery.RecoveryEnablement</entry>
|
|
||||||
|
|
||||||
|
|
||||||
<entry key="JTAEnvironmentBean.transactionManagerClassName">com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple</entry>
|
|
||||||
|
|
||||||
<entry key="JTAEnvironmentBean.userTransactionClassName">com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple</entry>
|
|
||||||
|
|
||||||
<entry key="JTAEnvironmentBean.transactionSynchronizationRegistryClassName">com.arjuna.ats.internal.jta.transaction.jts.TransactionSynchronizationRegistryImple</entry>
|
|
||||||
|
|
||||||
|
|
||||||
<entry key="OrbPortabilityEnvironmentBean.bindMechanism">CONFIGURATION_FILE</entry>
|
|
||||||
|
|
||||||
<entry key="OrbPortabilityEnvironmentBean.orbInitializationProperties">
|
|
||||||
<!-- This class handles context propagation issues, and should never be commented out or removed. -->
|
|
||||||
com.arjuna.orbportability.orb.PreInit1=com.arjuna.ats.internal.jts.context.ContextPropagationManager
|
|
||||||
<!-- This property ensures the JTS knows which ORB to use and should never be commented out or removed -->
|
|
||||||
com.arjuna.orbportability.orb.PostInit=com.arjuna.ats.jts.utils.ORBSetup
|
|
||||||
<!-- This property ensures the crash recovery is initialised correctly and should never be commented out or removed -->
|
|
||||||
com.arjuna.orbportability.orb.PostInit2=com.arjuna.ats.internal.jts.recovery.RecoveryInit
|
|
||||||
<!-- This property ensures the JTS knows which ORB to use and should never be commented out or removed -->
|
|
||||||
com.arjuna.orbportability.orb.PostSet1=com.arjuna.ats.jts.utils.ORBSetup
|
|
||||||
</entry>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
This property controls the port on which the Recovery ORB listens
|
|
||||||
-->
|
|
||||||
<entry key="JTSEnvironmentBean.recoveryManagerPort">4711</entry>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
This property controls the address on which the Recovery ORB binds - defaults to the loopback connection
|
|
||||||
If running within an AS then the address the AS is bound to (jboss.bind.address) takes precedence
|
|
||||||
-->
|
|
||||||
<entry key="JTSEnvironmentBean.recoveryManagerAddress"></entry>
|
|
||||||
|
|
||||||
|
|
||||||
</properties>
|
|
|
@ -1,20 +0,0 @@
|
||||||
# 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.
|
|
||||||
|
|
||||||
java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory
|
|
||||||
java.naming.provider.url=tcp://localhost:5445
|
|
||||||
queue.queue/exampleQueue=exampleQueue
|
|
Loading…
Reference in New Issue