User: d_jencks
Date: 01/08/24 12:09:33
Modified: src/docs jbossdocs.xml resource.xml
Log:
updated build.xml and config.xml to work a little better in buildmagic and included
draft of chapter on resources
Revision Changes Path
1.24 +18 -6 manual/src/docs/jbossdocs.xml
Index: jbossdocs.xml
===================================================================
RCS file: /cvsroot/jboss/manual/src/docs/jbossdocs.xml,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- jbossdocs.xml 2001/08/17 14:31:49 1.23
+++ jbossdocs.xml 2001/08/24 19:09:33 1.24
@@ -20,10 +20,10 @@
<!ENTITY howtojbuilderdebug.xml SYSTEM "howtojbuilderdebug.xml">
<!ENTITY howtoejx.xml SYSTEM "howtoejx.xml">
<!ENTITY howtojca.xml SYSTEM "howtojca.xml">
- <!ENTITY howtojndi_external.xml SYSTEM "howtojndi_external.xml">
+ <!ENTITY howtojndiexternal.xml SYSTEM "howtojndi_external.xml">
<!ENTITY basicconfiguration.xml SYSTEM "basicconfiguration.xml">
<!ENTITY jbossjms.xml SYSTEM "jbossjms.xml">
- <!ENTITY howto_socketfactories.xml SYSTEM "howto_socketfactories.xml">
+ <!ENTITY howtosocketfactories.xml SYSTEM "howto_socketfactories.xml">
<!ENTITY howtojaxp.xml SYSTEM "howtojaxp.xml">
<!ENTITY howtojpda.xml SYSTEM "howtojpda.xml">
<!ENTITY howtojetty.xml SYSTEM "howtojetty.xml">
@@ -32,10 +32,11 @@
<!ENTITY jbosssx.xml SYSTEM "jbosssx.xml">
<!ENTITY howtonetbeansdebug.xml SYSTEM "howtonetbeansdebug.xml">
<!ENTITY howtovisualagedebug.xml SYSTEM "howtovisualagedebug.xml">
- <!ENTITY howto_webcontainer.xml SYSTEM "howto_webcontainer.xml">
+ <!ENTITY howtowebcontainer.xml SYSTEM "howto_webcontainer.xml">
<!ENTITY webconfig.xml SYSTEM "webconfig.xml">
<!ENTITY howtoejbdoclet.xml SYSTEM "howtoejbdoclet.xml">
<!ENTITY howtoclientapplet.xml SYSTEM "howtoclientapplet.xml">
+ <!ENTITY resource.xml SYSTEM "resource.xml">
]>
<book>
<bookinfo>
@@ -49,6 +50,17 @@
&preface.xml;
&jbossintro.xml;
&basicconfiguration.xml;
+<chapter id="resource">
+ <title>Using Databases and other Enterprise Resources</title>
+ <para>
+ <author>
+ <firstname>David</firstname>
+ <surname>Jencks</surname>
+ </author>
+ <email>[EMAIL PROTECTED]</email>
+ </para>
+&resource.xml;
+</chapter>
<chapter id="jdbc">
<title>JDBC</title>
<para>
@@ -84,12 +96,12 @@
&howtonetbeansdebug.xml;
&howtoejx.xml;
&howtojca.xml;
-&howtojndi_external.xml;
-&howto_socketfactories.xml;
+&howtojndiexternal.xml;
+&howtosocketfactories.xml;
&howtojaxp.xml;
&howtoverifier.xml;
&howtopetstore.xml;
-&howto_webcontainer.xml;
+&howtowebcontainer.xml;
&howtoejbdoclet.xml;
&howtoclientapplet.xml;
</chapter>
1.3 +229 -17 manual/src/docs/resource.xml
Index: resource.xml
===================================================================
RCS file: /cvsroot/jboss/manual/src/docs/resource.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- resource.xml 2001/08/16 02:53:17 1.2
+++ resource.xml 2001/08/24 19:09:33 1.3
@@ -1,44 +1,256 @@
<?xml version="1.0" encoding="UTF-8"?>
-<section>
+<!--DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"docbookx/docbookx.dtd"-->
+<section id="resource-intro">
<title>Introduction</title>
- <section>
+ <section id="resource-intro-access">
<title>Access to Resource Managers</title>
- <para>In order for your ejbs to do much useful work, they will need to
communicate with a transactional resource manager such as a relational database,
transactional message que, or other enterprise information system. Jboss now supports
all such communication through the jca specification using Resource Adaptes. This
technology provides a uniform way to combine the application server's transaction
management and connection pooling functionalities with a resource adapters ability to
connect to and do work with a resource manager.</para>
+ <para>This chapter is primarily relevant to jboss 3.0 (rabbithole)</para>
+ <para>In order for your ejbs to do much useful work, they will need to
communicate with a transactional resource manager such as a relational database,
transactional message queue, or other enterprise information system. Jboss now
supports all such communication using Resource Adapters following the jca 1.0
specification (NEED LINK). This technology provides a uniform way to combine the
application server's transaction management and connection pooling functionalities
with a resource adapter's ability to connect to and do work with a resource
manager.</para>
<para>Jboss provides the ability to deploy any compliant resource adapter, and
connections from any adapter may be pooled by jboss, obtained from connection
factories bound in jndi, and used by client code. At the moment, however, only
connection factories implementing javax.sql.DataSource and connections implementing
java.sql.Connection may be used with CMP beans and JAWS to automate database
access.</para>
<para>Since few database vendors have supplied resource adapters for their
database products, the usual strategy for accessing relational databases consists of
using a generic resource adapter that wraps a jdbc driver into a jca resource adapter.
Jboss comes with two such adapters, one for jdbc 1 drivers without xa transaction
support, and one for jdbc 2 drivers implementing xa support with XADataSource and
XAConnection.</para>
- <para>As well as providing a systematic, well thought out framework for pooling
and transaction control for relational databases, jca also provides another
specification ("cci") for connection factories and connections unrelated to jdbc. An
adaptor could use these to provide predefined access to stored procedures in a
relational database, or these could be used to access a message que, or enterprise
information system such as CICS or SAP. Although there are no particular conceptual
difficulties in using such resource adapters with CMP beans, support for this is not
yet integrated into jboss. </para>
+ <para>As well as providing a systematic, well thought out framework for pooling
and transaction control that can be used for relational databases, jca also provides
another specification ("cci") for connection factories and connections unrelated to
jdbc. An adaptor could use these to provide predefined access to stored procedures in
a relational database, or these could be used to access a message que, or enterprise
information system such as CICS or SAP. Although there are no particular conceptual
difficulties in using such resource adapters to automatically manage persistence of
CMP beans, support for this is not yet integrated into jboss. </para>
</section>
- <section>
+ <section id="resource-intro-pooling">
<title>Why pooling?</title>
- <para></para>
+ <para>Most often connections to resource managers such as relational databases
take a significant amount of time to set up and consume a significant amount of
resources. It would be unacceptably inefficient to construct, use, and tear down a
physical connection for each client request in an application server environment, nor
would it usually be appropriate to reserve a connection for each user. Some means of
sharing and reusing expensive connections is necessary. The jca solution to this
involves ManagedConnections, which are "physical" connections to the resource manager
provided by the resource adapter, and which are pooled by the ConnectionManager
provided by the application server, and short lived connection handles to these
ManagedConnections, which can be handed out on demand and returned (closed) when done
with. Note that there are three layers here: a client (or persistence framework such
as JAWS) requests a (resource adapter-specific) connection from a
(resource-adapter-specific) connection factory; the connection factory basically
typecasts a generic connection handle from the (jboss supplied) ConnectionManager,
which has just obtained the connection handle from a ManagedConnection (from the
resource adapter) that it retrieved (from a pool) or created.</para>
</section>
- <section>
+ <section id="resource-intro-transactionsupport">
<title>Levels of Transaction Support</title>
- <para></para>
+ <para>There are three levels of transaction support mentioned in the jca
specification: full xa support for distributed transactions with two phase commit,
single phase local (to a single resource manager/adapter) transactions, and no
transaction support. Since the ConnectionManager mediates all connection handles
supplied to clients, it is also the component that mediates between the transaction
manager and the connections, making sure that each managed connection is enrolled in
the correct transaction for the client that currently has its connection handle. For
example, database XADataSource-based drivers can be wrapped into resource adapters
supporting xa transactions, whereas database jdbc 1.0 drivers can be wrapped into
resource adapters supporting local transactions.</para>
</section>
- <section>
+ <section id="resource-intro-overview">
<title>Organization</title>
<para>We will start with an overview of the components of a resource adapter
and related parts of an application server, and how these are set up in jboss. We
proceed with a description of how to configure a connection factory for an arbitrary
resource adapter, followed by instructions for using the specific jdbc wrapper
resource adapters provided with jboss for non xa and xa jdbc drivers. This will be
followed by a detailed discussion with examples of how to set up these wrappers for
the most commonly used databases. If you are using a database not listed here, please
contribute a working setup to help others. Finally we discuss migration from the
previous jboss implementation, the XADataSourceLoader.</para>
</section>
- <section>
+ <section id="resource-architecture">
<title>Resource Adapter Architecture and JBoss</title>
- <para></para>
+ <para>Here we present a list of many of the classes you need for a resource
adapter setup, with descriptions of their purpose and whether they are part of the
resource adapter or jboss.</para>
+ <orderedlist>
+ <listitem>
+ <formalpara>
+ <title>ConnectionFactory (resource adapter)</title>
+ <para>This is what your client program (or JAWS) uses to get the
connections to do its work. The most familiar example is the javax.sql.DataSource,
supplying db connections. The resource cci spec describes another sort of connection
that provides a way to get at less standardized resource managers. The connections
from the connection factory do not represent actual resource manager connections but
rather short-lived handles to them to be used only briefly during actual resource
access. "Closing" such a handle merely indicates you are done using it, not that the
underlying connection to the resource should be disposed of. When a connection is
requested, the ConnectionFactory simply asks the ConnectionManager for one.</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>ConnectionManager (jboss)</title>
+ <para>The connection manager provides pooling functionality and makes
sure connections are hooked up to the right transactions. It doesn't know anything
about what kind of connections its dealing with, just how to pool them and hook up
transactions. Now what it's actually pooling are ManagedConnections, which we'll get
to in a minute. When it needs another one, it asks the ManagedConnectionFactory.
When you ask for a connection, it finds or creates a managed connection and gets a
connection handle from the managed connection to return to you. When it is looking
for a ManagedConnection, it gets to use two criteria: ConnectionRequestInfo and
Subject. The ConnectionRequestInfo comes from the ConnectionFactory, and contains
resource adapter specific per-connection configuration information, such as client id
or language. The connection manager does not know the internal structure of
ConnectionRequestInfo, but passes it unchanged to the ManagedConnectionFactory. The
subject comes from a PrincipalMapping, which may supply a "constant" user or may
translate the principal information from the client context into a resource-adapter
suitable subject. The ConnectionRequestInfo and Subject are parameters for creating a
new ManagedConnection; if preexisting pooled connections are available, the
ConnectionManager asks the ManagedConnectionFactory for a match based on the
ConnectionRequestInfo and Subject from among the available ManagedConnections. </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>ManagedConnectionFactory (Resource adapter)</title>
+ <para>The ManagedConnectionFactory actually creates and configures the
actual connections to the resource manager we're doing all this work to get to. This
is really the only part of the resource adapter you can configure at deployment time,
telling it usually what resource instance (such as database) and possibly user and
password to connect to. When the ConnectionManager needs another physical connection
to use, it asks the ManagedConnectionFactory.</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>ManagedConnection</title>
+ <para>The ManagedConnection is the actual physical connection to the
resource. In its interface it doesn't really do anything itself, but provides two
kinds of handles so you can do something with it: Connections so you can do work in
the resource, and transaction management handles consisting of either XAResource for
controlling xa (two phase) transactions or LocalTransaction for resources that do not
support the xa protocol.</para>
+ </formalpara>
+ </listitem>
+ </orderedlist>
+ <para>In addition, there are several classes provided by jboss to get all this
set up. You will mostly be dealing with ConnectionFactoryLoader mbean configuration.
After a resource adapter is deployed, which makes the classes available and checks
that all the necessary parts are identified, the ConnectionFactoryLoader will
instantiate and configure instances of many of the classes listed above to prepare for
access to a specific resource instance. In particular it uses a
ConnectionManagerFactory to create a ConnectionManager instance for this connector
instance.</para>
</section>
<section>
<title>Configuring a connection factory for an arbitrary resource
adapter.</title>
- <para> </para>
+ <para>There are three major pieces of the connector framework that can be
configured: the ManagedConnectionFactory, where you configure such resource adapter
specific properties as which resource instance you are connecting to and transaction
isolation, the ConnectionManager where you specify pooling policies, and the
PrincipalMapping -- how to determine who the resource user is and how to authenticate
that user. Each of these is configured using text in the Properties.load file format.
In addition, you need to specify many classes and mbeans to get just the
configuration you want.</para>
+ <formalpara>
+ <title>Attributes of a ConnectionFactoryLoader mbean configuration</title>
+ <para><orderedlist>
+ <listitem>
+ <formalpara>
+ <title>mbean code="org.jboss.resource.ConnectionFactoryLoader"
+ name="DefaultDomain:service=ConnectionFactoryLoader,name=DefaultDS"</title>
+ <para>This is the mbean declaration, identifying it as a
ConnectionFactoryLoader instance and supplying an ObjectName. Note that the
name="myObjectName" is part of the ConnectionFactoryLoader mbean ObjectName and has
nothing to do with the jndi name the ConnectionFactory will be bound under.</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>JndiName (formerly FactoryName)</title>
+ <para>This is the JNDI name that the ConnectionFactory will end up
getting bound under in JNDI. You or JAWS use this to find the ConnectionFactory when
you want to do some work on the resource it is connected to.</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>TransactionManagerName</title>
+ <para>This is the jndi name of the transaction manager to hook up
transactions from. Normally it is java:/TransactionManager</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>RARDeployerName</title>
+ <para>This is the (string representation of) the mbean ObjectName of
the connector deployer. This is needed because usually the ConnectionFactoryLoader is
configured and started before the resource adapter is deployed. When the resource
adapter is deployed, all the ConnectionFactoryLoaders are notified that they can
finish their setup and actually create the ManagedConnectionFactory etc.</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>ResourceAdapterName</title>
+ <para>This is a little more interesting! Finally we specify which
resource adapter this ConnectionFactory should be using. This is the display-name
element from the resource adapter's internal deployment descriptor (ra.xml)</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>ManagedConnectionFactoryProperties</title>
+ <para>These are, in Properties.load file format, all the
configuration you want to do on the ManagedConnectionFactory. Typically this will
include what resource you are connecting to and such adapter specific items as
transaction isolation. The configurable items are specified in the resource adapter's
deployment descriptor (ra.xml)</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>ConnectionManagerFactoryName</title>
+ <para>This is the jndi name of a ConnectionManagerFactory. By
specifying the ConnectionManagerFactory, you are specifying what kind of connection
manager you want to use. There are three choices supplied with JBoss providing
different levels of transaction support: none, local, and xa. They all rely on the
same pooling code, although they will behave differently when receiving multiple
requests for a connection from within the same transaction. If you wish to provide
alternate pooling or other ConnectionManager functionality, you must provide both a
ConnectionManager and a ConnectionManagerFactory, and provide a
ConnectionManagerFactoryLoader configuration section in jboss.jcml to make the factory
available.</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>ConnectionManagerProperties</title>
+ <para>For the three jboss ConnectionManagers, this configures, in
property file format, the pooling parameters.
+ <orderedlist>
+ <listitem>
+ <formalpara>
+ <title>MinSize</title>
+ <para>The initial and minimum number of managed connections
in the pool</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>MaxSize</title>
+ <para>The maximum number of managed connections in the pool.
Requests beyond this will block or return null depending on the value of the Blocking
parameter. ????is returning null supported by the spec????</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>Blocking</title>
+ <para>(true, false). If true, requests for connections when
there are none available will block. If false, such requests will return null. ???Is
this speccompliant???</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>IdleTimeoutEnabled</title>
+ <para>(true, false). If true, ManagedConnections idle for
the idle timeout value will be disposed of. If false, ManagedConnections will remain
in the pool indefinitely. Note that if your resource manager closes connections after
a period of inactivity you should set this true and adjust the idle timeout value to
match your resource managers characteristics. Note that the scan for idle connections
occurs with the same frequence as the garbage collection, controlled by the
GCIntervalMillis parameter, so you will want to adjust this value as well. The
default value for GCInterval is 2 minutes.CHECKTHIS</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>IdleTimeoutMillis</title>
+ <para>This is the (minimum) time for the connection manager
to wait in milliseconds before closing unused connections. This is used only if
IdleTimeoutEnabled is true.</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>MaxIdleTimeoutPercent</title>
+ <para>(0.0 .. 1.0)Despite the name "Percent" suggesting a
value between 0 and 100, this parameter must be between 0.0 and 1.0. It controls the
amount a pool can shrink due to idle timouts closing connections. If 0.0, each time
idle connections are closed, if n are closed, n-1 will be created anew so the pool
size is reduced by one. If 1.0, connections are created only if necessary to get back
to the pool minimum size. </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>GCEnabled</title>
+ <para>(true, false) Garbage collection reclaims connections
that havebeen held too long (as determined by the GCIntervalMillis parameter) by a
client. If a reclaimed connection is still valid, as determined by
ManagedConnection.cleanup() returning without an exception, the connection is made
immediately available in the pool. If the connection cannot be reclaimed, as
determined by the cleanup() method throwing a ResourceException, the connection is
discarded.</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>GCMinIdleMillis</title>
+ <para>The time a connection can be held by a client before
being reclaimed by the pool without the client releasing it, if GCEnabled is
true.</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>GCIntervalMillis</title>
+ <para>The time between garbage collection/ idle timeout
removal runs. This may not be exact due to server load.</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>TimestampUsed</title>
+ <para>(true, false) If true, PoolEvents will update the
timestamp, preventing garbage collection/idle timeout. It is not clear to me at the
moment if PoolEvents can be generated for this purpose except on getting or closing
connections and starting or ending resources and committing or rolling back
transactions.</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>InvalidateOnError</title>
+ <para>(true, false) Sets whether a connection is removed from
the pool in case of error. The errors come from a PoolEvent announcing an error. I
don't know how such PoolEvents are generated.</para>
+ </formalpara>
+ </listitem>
+ </orderedlist>
+ </para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>PrincipalMappingClass</title>
+ <para>In order to get a connection, you need a
javax.security.auth.Subject. This class is responsible for mapping the
callerPrincipal used in the rest of the application to a Subject of the appropriate
form for use with the resource manager. For instance for a database, this subject
normally contains a user name and password. The ManyToOnePrincipalMapping ignores the
callerPrincipal and always returns a Subject with PrivateCredentials consisting of a
PasswordCredential containing the userName and password specified in the
PrincipalMappingProperties. Non database resource adapters may require other
principal mappings or Subject credentials.</para>
+ </formalpara>
+ </listitem>
+ <listitem>
+ <formalpara>
+ <title>PrincipalMappingProperties</title>
+ <para>This provides, in Properties.load file format, the properties
for the PrincipalMappingClass instance. For the ManyToOnePrincipalMapping, these
properties consist of userName and password.</para>
+ </formalpara>
+ </listitem>
+ </orderedlist>
+</para>
+ </formalpara>
</section>
- <section>
+ <section id="resource-jdbc-wrappers">
<title>Configuring the jdbc wrapper resource adapters</title>
- <para></para>
+ <para>As for any resource adapter, all the resource adapter specific
configuration must be done with the ManagedConnectionFactoryProperties entry. Let's
consider the contents separately for the two wrappers. </para>
+ <section id="resource-jdbc-wrappers-local">
+ <title>LocalTransaction wrapper for jdbc 1 (non-xa) drivers</title>
+ <para>Here are the available properties to configure.
+ <itemizedlist>
+ <listitem>
+ <para>UserName (String). The username used to create JDBC connections.
This can also be supplied via the PrincipalMapping class, for instance the
ManyToOnePrincipalMapping can provide a "constant" user/password.</para>
+ </listitem>
+ <listitem>
+ <para>Password (String). The default password used to create a JDBC
connection. As for UserName, this can be supplied by the PrincipalMapping.</para>
+ </listitem>
+ <listitem>
+ <para>ConnectionURL (String). The jdbc URL used to create jdbc
connections from java.sql.Driver.</para>
+ </listitem>
+ <listitem>
+ <para>Driver (String). The class name of the JDBC driver that handles
this jdbc URL. Note that it is preferred to use this property rather than the
JDBCProvider previously required.</para>
+ </listitem>
+ <listitem>
+ <para>TransactionIsolation (String). The string name of the desired
transaction isolation for the connections. The allowed strings are the names of the
static Connection members, TRANSACTION_SERIALIZABLE, TRANSACTION_REPEATABLE_READ,
TRANSACTION_READ_COMMITTED, TRANSACTION_READ_UNCOMMITTED, TRANSACTION_NONE. Note that
not all values are supported by all databases. Alternatively, you may use (the string
representation of) the integer value for the transaction isolation level. This may be
useful if a driver supports a nonstandard isolation level.</para>
+ </listitem>
+ <listitem>
+ <para>AutoCommit (String). You are strongly advised not to set this.
The autocommit property is set false by default for connections obtained from this
adapter wrapper. This property is included only to provide emulation of the obsolete
JDBCDataSourceLoader which provided no transaction support and left autocommit
true.</para>
+ </listitem>
+ </itemizedlist>
+</para>
+ </section>
+ <section id="resource-jdbc-wrappers-xa">
+ <title>XA Transaction wrapper for jdbc 2 XADataSource drivers</title>
+ <para>Here are the available properties to configure.
+ <itemizedlist>
+ <listitem>
+ <para>XADataSourceClass (String). The class name of the underlying
XADataSource driver. This specifies what driver is being wrapped.</para>
+ </listitem>
+ <listitem>
+ <para>XADataSourceProperties (String) These are the properties needed
to configure the underlying XADataSource. They must be in the format of name=value
pairs separated by semicolons, with no spaces. For example,
name1=value1;name2=value2;name3=value3. The most typical use for this is the url for
the database instance you are connecting to.</para>
+ </listitem>
+ <listitem>
+ <para>UserName (String). The username used to create JDBC connections.
This can also be supplied via the PrincipalMapping class, for instance the
ManyToOnePrincipalMapping can provide a "constant" user/password.</para>
+ </listitem>
+ <listitem>
+ <para>Password (String). The default password used to create a JDBC
connection. As for UserName, this can be supplied by the PrincipalMapping.</para>
+ </listitem>
+ <listitem>
+ <para>TransactionIsolation (String). The string name of the desired
transaction isolation for the connections. The allowed strings are the names of the
static Connection members, TRANSACTION_SERIALIZABLE, TRANSACTION_REPEATABLE_READ,
TRANSACTION_READ_COMMITTED, TRANSACTION_READ_UNCOMMITTED, TRANSACTION_NONE. Note that
not all values are supported by all databases. Alternatively, you may use (the string
representation of) the integer value for the transaction isolation level. This may be
useful if a driver supports a nonstandard isolation level.</para>
+ </listitem>
+ </itemizedlist>
+</para>
+ </section>
</section>
- <section>
+ <section id="resource-db-specific">
<title>Examples for specific databases</title>
<para></para>
</section>
- <section>
+ <section id="resource-migration">
<title>Migration from older jboss versions</title>
- <para>Previous versions of jboss provided database connectivity and connection
pooling through the XADataSourceLoaderMBean. This was normally used with the
XADataSourceImpl, which provided an xa interface for a non-xa jdbc driver. Of course,
since the underlying driver did not support xa transactions, neither did the "XA"
wrapper. These drivers can now be used with the Minerva JDBC LocalTransaction
ResourceAdapter, which works with the transaction manager using local, non-xa
transactions, eliminating the confusion of imitating but not implementing xa
semantics. If you have a true XADataSource implementation for your database, you can
instead use the Minerva JDBC XATransaction ResourceAdapter, which provides full xa
support.</para>
+ <para>Previous versions of jboss provided database connectivity and connection
pooling through the XADataSourceLoaderMBean. This was normally used with the
XADataSourceImpl, which provided an xa interface for a non-xa jdbc driver. Of course,
since the underlying driver did not support xa transactions, neither did the XA
wrapper. These drivers can now be used with the Minerva JDBC LocalTransaction
ResourceAdapter, which works with the transaction manager using local, non-xa
transactions, eliminating the confusion of imitating but not implementing xa
semantics. If you have a true XADataSource implementation for your database, you can
instead use the Minerva JDBC XATransaction ResourceAdapter, which provides full xa
support.</para>
<para>In this version of jboss, the XADataSourceLoader has been rewritten to
assist you in migrating to this new architecture. This mbean now accepts the
configuration information from jboss.jcml, and creates a ConnectionFactoryLoader mbean
with the appropriate connection pool and Minerva Resource Adapter and equivalent
configuration. You can complete the conversion by saving your mbean configuration to
a file using the ConfigurationService mbean, copying the new ConnectionFactoryLoader
mbean configuration into your jboss.jcml file, and removing the
XADataSourceLoader.</para>
<para>The migration results in the following conversions:
<orderedlist>
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development