Message-ID: <308314830.20539.1416980250182.JavaMail.firstname.lastname@example.org> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_20538_55727446.1416980250182" ------=_Part_20538_55727446.1416980250182 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
BTM XA connection factories can be created - like their JDBC counterpart= s - via some java code or via a BTM-specific tool called the Resource Loade= r. You are free to choose the method you prefer, there is absolutely no dif= ference between them.=20 =20
BTM comes bundled with a JMS XA connection pool which is very easy to co= nfigure. You basically have to create an instance of bitronix.tm.resource.jms.Pooling= ConnectionFactory set some properties and you're done.=20
Here is an example of datasource creation that connects to an ActiveMQ J= MS server:=20 =20
1. The Bitronix
is a javabean that implements
2. You have to specify the JMS server's
ionFactory implementation here.
3. Each conne= ction factory must be assigned a unique name. This is required for distribu= ted crash recovery.
4. This connection factory can c= ontain at least 1 connection. 0 is the default value when unspecified.
5. This connection factory can contain at most 5 connect= ions.
6. You have to set
s to true if you want to be able to send or receive messages outside=
of XA transactions scope.
7,8. When both are set, t= he pooled connections will be created using the provided user and password = instead of without credentials. This works like if you called
ionFactory.createConnection(user, password) instead of
9. The driverP= roperties is a
java.util.Properties object. You have to add in=
to it a set of property name / property value of the
tionFactory class. You have to refer to the JMS server's documentati=
on to know what can / has to be set. The ActiveMQXAConnectionFac=
tory javadoc contains this list for the ActiveMQ case. BTM will perform=
boolean or to
t when necessary.
10,11. You can now use the =
PoolingConnectionFactory like any other
12. Remember to close the
PoolingConnectionFactory after you're done with it to release the co=
Like for JDBC, the connection pool will be initialized during the first =
createConnection(). It might be desirable to initializ=
e the pool eagerly, like during application startup rather than having to w=
ait for the first request. This can be done by calling
Now line 7 will initialize the pool and create the 5 connections to the = JMS server instead of line 8.=20
A connection factory configuration utility is also bundled with BTM. It = is convenient to use it rather than create your connection factory in code.= Refer to the Resource Loader= page for more details.=20
Here is the equivalent Resource Loader configuration of the previous cod= e example:=20 =20
You just have to write those properties in a simple text file and tell B=
TM where to load it by setting the
resourceConfigurationFilename property of the Configuration12=
Now you also have to know how to get the connection factory created by t= he Resource Loader. There are multiple ways:=20
bitronix.tm.resource.bind=3Dtrueto your resource load= er properties file. The connection factories will then be bound to the defa= ult JNDI server using their
uniqueNameas their JNDI name.
add= rTypesomewhere in your JNDI tree. The
bitronix.tm.resource.Re= sourceObjectFactoryclass will just return the connection factory wi= th the specified
uniqueName. This is explained more in-depth i= n the Tomcat12 integration page.