Este contenido no está disponible en el idioma seleccionado.
4.2. Recovering XAConnections
When recovering from failures, JBossJTA requires the ability to reconnect to databases that were in use prior to the failures, in order to resolve outstanding transactions. Most connection information is saved by the transaction service during its normal execution, and can be used during recovery to recreate the connection. However, it is possible that some of the information is lost during the failure, if the failure occurs while it is being written. In order to recreate those connections, you must provide one implementations of the JBossJTA interface
com.arjuna.ats.jta.recovery.XAResourceRecovery for each database that may be used by an application.
Note
If you are using the transactional JDBC 2.0 driver provided with JBossJTA, no additional work is necessary in order to ensure that recovery occurs.
To inform the recovery system about each of the
XAResourceRecovery instances, specify their class names through properties. Any property found in the properties file, or registered at run-time, starting with the name com.arjuna.ats.jta.recovery.XAResourceRecovery is recognized as representing one of these instances. Its value is the class name, such as: com.arjuna.ats.jta.recovery.XAResourceRecoveryOracle=com.foo.barRecovery
Additional information to be passed to the instance at creation can be specified after a semicolon:
com.arjuna.ats.jta.recovery.XAResourceRecoveryOracle=com.foo.barRecovery;myData=hello
Note
These properties should be in the JTA section of the
property file.
Any errors will be reported during recovery.
Each method should return the following information:
initialize- After the instance is created, any additional information found after the first semicolon in the property value definition is passed to the object. The object can use this information in an implementation-specific manner.
hasMoreResources- Each
XAResourceRecoveryimplementation can provide multipleXAResourceinstances. Before calling togetXAResource,hasMoreResourcesis called to determine whether any further connections need to be obtained. If the return value isfalse,getXAResourceis not called called again during this recovery sweep and the instance is ignored until the next recovery scan. getXAResource- Returns an instance of the
XAResourceobject. How this is created (and how the parameters to its constructors are obtained) is up to theXAResourceRecoveryimplementation. The parameters to the constructors of this class should be similar to those used when creating the initial driver or data source, and should be sufficient to create newXAResourcesinstances that can be used to drive recovery.
Note
If you want your
XAResourceRecovery instance to be called during each sweep of the recovery manager, ensure that once hasMoreResources returns false to indicate the end of work for the current scan, it then returns true for the next recovery scan.