[jboss-cvs] JBossAS SVN: r104928 - in projects/jboss-jca/trunk: core/src/test/resources and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue May 18 09:20:45 EDT 2010


Author: jesper.pedersen
Date: 2010-05-18 09:20:44 -0400 (Tue, 18 May 2010)
New Revision: 104928

Modified:
   projects/jboss-jca/trunk/build.xml
   projects/jboss-jca/trunk/core/src/test/resources/transaction-jboss-beans.xml
   projects/jboss-jca/trunk/embedded/src/main/resources/transaction.xml
   projects/jboss-jca/trunk/ivy.xml
   projects/jboss-jca/trunk/sjc/src/main/resources/bootstrap/transaction.xml
   projects/jboss-jca/trunk/standalone/src/main/resources/bootstrap/transaction.xml
Log:
[JBJCA-332] JBoss TS 4.11.0.Final

Modified: projects/jboss-jca/trunk/build.xml
===================================================================
--- projects/jboss-jca/trunk/build.xml	2010-05-18 13:09:49 UTC (rev 104927)
+++ projects/jboss-jca/trunk/build.xml	2010-05-18 13:20:44 UTC (rev 104928)
@@ -120,7 +120,7 @@
   <property name="version.jboss.slf4j.logmanager" value="1.0.0.CR2"/>
   <property name="version.jboss.stdio" value="1.0.0.CR3"/>
   <property name="version.jboss.threads" value="2.0.0.CR3"/>
-  <property name="version.jboss.ts" value="4.9.0.GA"/>
+  <property name="version.jboss.ts" value="4.11.0.Final"/>
   <property name="version.jboss.vfs" value="2.1.3.SP1"/>
   <property name="version.jboss.xb" value="2.0.1.GA"/>
   <property name="version.jdepend" value="2.9.1"/>

Modified: projects/jboss-jca/trunk/core/src/test/resources/transaction-jboss-beans.xml
===================================================================
--- projects/jboss-jca/trunk/core/src/test/resources/transaction-jboss-beans.xml	2010-05-18 13:09:49 UTC (rev 104927)
+++ projects/jboss-jca/trunk/core/src/test/resources/transaction-jboss-beans.xml	2010-05-18 13:20:44 UTC (rev 104928)
@@ -3,12 +3,12 @@
 <deployment>
 
   <bean name="LoggingEnvironmentBean" class="com.arjuna.common.internal.util.logging.LoggingEnvironmentBean">
-    <constructor factoryClass="com.arjuna.common.internal.util.logging.commonPropertyManager" factoryMethod="getLoggingEnvironmentBean"/>
+    <constructor factoryClass="com.arjuna.common.internal.util.logging.commonPropertyManager" factoryMethod="getLoggingEnvironmentBean"/>        
     <property name="loggingFactory">com.arjuna.common.internal.util.logging.jakarta.JakartaRelevelingLogFactory;com.arjuna.common.internal.util.logging.jakarta.Log4JLogger</property>
   </bean>
-  
-  <bean name="RecoveryEnvironmentBean">
-    <constructor factoryClass="com.arjuna.ats.arjuna.common.recoveryPropertyManager" factoryMethod="getRecoveryEnvironmentBean"/>    
+
+  <bean name="RecoveryEnvironmentBean" class="com.arjuna.ats.arjuna.common.RecoveryEnvironmentBean">
+    <constructor factoryClass="com.arjuna.ats.arjuna.common.recoveryPropertyManager" factoryMethod="getRecoveryEnvironmentBean"/>
     <property name="recoveryInetAddress">localhost</property>
     <property name="recoveryPort">4712</property>
     <property name="transactionStatusManagerInetAddress">localhost</property>
@@ -29,47 +29,58 @@
       <null/>
     </property>
   </bean>
-  
-  <bean name="CoreEnvironmentBean">
+
+  <bean name="CoreEnvironmentBean" class="com.arjuna.ats.arjuna.common.CoreEnvironmentBean">
     <constructor factoryClass="com.arjuna.ats.arjuna.common.arjPropertyManager" factoryMethod="getCoreEnvironmentBean"/>
-    <property name="socketProcessIdPort">0</property>    
+    <property name="socketProcessIdPort">0</property>
     <property name="nodeIdentifier">1</property>
     <property name="socketProcessIdMaxPorts">10</property>
   </bean>
-  
-  <bean name="CoordinatorEnvironmentBean">
+
+  <bean name="CoordinatorEnvironmentBean" class="com.arjuna.ats.arjuna.common.CoordinatorEnvironmentBean">
     <constructor factoryClass="com.arjuna.ats.arjuna.common.arjPropertyManager" factoryMethod="getCoordinatorEnvironmentBean"/>
     <property name="enableStatistics">false</property>
     <property name="defaultTimeout">300</property>
   </bean>
-  
-  <bean name="ObjectStoreEnvironmentBean">
+
+  <bean name="ObjectStoreEnvironmentBean" class="com.arjuna.ats.arjuna.common.ObjectStoreEnvironmentBean">
     <constructor factoryClass="com.arjuna.ats.arjuna.common.arjPropertyManager" factoryMethod="getObjectStoreEnvironmentBean"/>
     <property name="objectStoreDir">${jboss.jca.home}/tmp/tx-object-store</property>
   </bean>
-  
-  <bean name="JTAEnvironmentBean">
+
+  <bean name="ObjectStoreBrowserBean" class="com.arjuna.ats.arjuna.tools.osb.mbean.ObjStoreBean">
+    <constructor factoryClass="com.arjuna.ats.arjuna.tools.osb.mbean.ObjStoreBean" factoryMethod="getObjectStoreBrowserBean"/>
+    <depends>ObjectStoreEnvironmentBean</depends>
+  </bean>
+
+  <bean name="JTAEnvironmentBean" class="com.arjuna.ats.jta.common.JTAEnvironmentBean">
     <constructor factoryClass="com.arjuna.ats.jta.common.jtaPropertyManager" factoryMethod="getJTAEnvironmentBean"/>
     <property name="lastResourceOptimisationInterface">org.jboss.tm.LastResource</property>
-    <property name="jtaTMImplementation">com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate</property>
-    <property name="jtaUTImplementation">com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple</property>
-    <property name="jtaTSRImplementation">com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple</property>
+    <property name="transactionManagerClassName">com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate</property>
+    <property name="userTransactionClassName">com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple</property>
+    <property name="transactionSynchronizationRegistryClassName">com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple</property>
     <property name="xaRecoveryNodes">
       <list elementClass="java.lang.String">
         <value>1</value>
       </list>
     </property>
+    <property name="xaResourceOrphanFilterClassNames">
+      <list elementClass="java.lang.String">
+        <value>com.arjuna.ats.internal.jta.recovery.arjunacore.JTATransactionLogXAResourceOrphanFilter</value>
+        <value>com.arjuna.ats.internal.jta.recovery.arjunacore.JTANodeNameXAResourceOrphanFilter</value>
+      </list>
+    </property>
   </bean>
-  
+
   <bean name="RecoveryManager" class="com.arjuna.ats.jbossatx.jta.RecoveryManagerService">
     <depends>LoggingEnvironmentBean</depends>
     <depends>RecoveryEnvironmentBean</depends>
   </bean>
-  
+
   <bean name="XATerminator" class="com.arjuna.ats.internal.jbossatx.jta.jca.XATerminator"/>
-  
+
   <bean name="TransactionSynchronizationRegistry" class="com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple"/>
-  
+
   <bean name="TransactionManager" class="com.arjuna.ats.jbossatx.jta.TransactionManagerService">
     <property name="jbossXATerminator"><inject bean="XATerminator"/></property>
     <property name="transactionSynchronizationRegistry"><inject bean="TransactionSynchronizationRegistry"/></property>
@@ -85,69 +96,77 @@
     <depends>TransactionPropagationContextImporterJNDIBinding</depends>
     <depends>TransactionPropagationContextExporterJNDIBinding</depends>
   </bean>
-  
-  <bean name="TransactionStatistics">
+
+  <bean name="TransactionStatistics" class="com.arjuna.ats.arjuna.coordinator.TxStats">
     <constructor factoryClass="com.arjuna.ats.arjuna.coordinator.TxStats" factoryMethod="getInstance"/>
   </bean>
-  
+
   <bean name="TransactionManagerJNDIBinding" class="com.arjuna.ats.jta.utils.JNDIReferenceBindingBean">
     <property name="bindName">java:/TransactionManager</property>
     <property name="className">
-      <inject bean="JTAEnvironmentBean" property="jtaTMImplementation"/>
+      <inject bean="JTAEnvironmentBean" property="transactionManagerClassName"/>
     </property>
     <property name="factory">
-      <inject bean="JTAEnvironmentBean" property="jtaTMImplementation"/>
+      <inject bean="JTAEnvironmentBean" property="transactionManagerClassName"/>
     </property>
-    
+
     <install method="bind"/>
     <uninstall method="unbind"/>
 
     <depends>NamingServer</depends>
   </bean>
-  
+
   <bean name="TransactionSynchronizationRegistryJNDIBinding" class="com.arjuna.ats.jta.utils.JNDIReferenceBindingBean">
     <property name="bindName">java:/TransactionSynchronizationRegistry</property>
     <property name="className">
-      <inject bean="JTAEnvironmentBean" property="jtaTSRImplementation"/>
+      <inject bean="JTAEnvironmentBean" property="transactionSynchronizationRegistryClassName"/>
     </property>
     <property name="factory">
-      <inject bean="JTAEnvironmentBean" property="jtaTSRImplementation"/>
+      <inject bean="JTAEnvironmentBean" property="transactionSynchronizationRegistryClassName"/>
     </property>
-    
+
     <install method="bind"/>
     <uninstall method="unbind"/>
 
     <depends>NamingServer</depends>
   </bean>
-    
+
   <bean name="TransactionPropagationContextImporterJNDIBinding" class="com.arjuna.ats.jta.utils.JNDIReferenceBindingBean">
     <property name="bindName">java:/TransactionPropagationContextImporter</property>
     <property name="className">com.arjuna.ats.internal.jbossatx.jta.PropagationContextManager</property>
     <property name="factory">com.arjuna.ats.internal.jbossatx.jta.PropagationContextManager</property>
-    
+
     <install method="bind"/>
     <uninstall method="unbind"/>
 
     <depends>NamingServer</depends>
   </bean>
-  
+
   <bean name="TransactionPropagationContextExporterJNDIBinding" class="com.arjuna.ats.jta.utils.JNDIReferenceBindingBean">
     <property name="bindName">java:/TransactionPropagationContextExporter</property>
     <property name="className">com.arjuna.ats.internal.jbossatx.jta.PropagationContextManager</property>
     <property name="factory">com.arjuna.ats.internal.jbossatx.jta.PropagationContextManager</property>
-    
+
     <install method="bind"/>
     <uninstall method="unbind"/>
 
     <depends>NamingServer</depends>
   </bean>
-  
+
+  <!-- Ensure TransactionPropagationContextUtil's ref to TransactionPropagationContextFactory is set. See JBAS-7784. -->
+  <bean name="TransactionPropagationContextFactory" class="org.jboss.tm.TransactionPropagationContextFactory">
+    <constructor factoryClass="org.jboss.tm.TransactionPropagationContextUtil" factoryMethod="getTPCFactory"/>
+    <!--  The factory method looks up the JNDI binding, so we depend on it -->
+    <depends>TransactionPropagationContextExporterJNDIBinding</depends>
+  </bean>
+
+  <!-- Make javax.transaction.TransactionManager available for injection -->
   <bean name="RealTransactionManager">
     <constructor factoryMethod="getTransactionManager">
       <factory bean="TransactionManager"/>
     </constructor>
   </bean>
-  
+
   <!-- Handles user transaction providers and listeners -->
   <bean name="UserTransactionRegistry" class="org.jboss.tm.usertx.UserTransactionRegistry">
     <!-- Register providers -->

Modified: projects/jboss-jca/trunk/embedded/src/main/resources/transaction.xml
===================================================================
--- projects/jboss-jca/trunk/embedded/src/main/resources/transaction.xml	2010-05-18 13:09:49 UTC (rev 104927)
+++ projects/jboss-jca/trunk/embedded/src/main/resources/transaction.xml	2010-05-18 13:20:44 UTC (rev 104928)
@@ -3,12 +3,12 @@
 <deployment>
 
   <bean name="LoggingEnvironmentBean" class="com.arjuna.common.internal.util.logging.LoggingEnvironmentBean">
-    <constructor factoryClass="com.arjuna.common.internal.util.logging.commonPropertyManager" factoryMethod="getLoggingEnvironmentBean"/>
+    <constructor factoryClass="com.arjuna.common.internal.util.logging.commonPropertyManager" factoryMethod="getLoggingEnvironmentBean"/>        
     <property name="loggingFactory">com.arjuna.common.internal.util.logging.jakarta.JakartaRelevelingLogFactory;com.arjuna.common.internal.util.logging.jakarta.Log4JLogger</property>
   </bean>
-  
-  <bean name="RecoveryEnvironmentBean">
-    <constructor factoryClass="com.arjuna.ats.arjuna.common.recoveryPropertyManager" factoryMethod="getRecoveryEnvironmentBean"/>    
+
+  <bean name="RecoveryEnvironmentBean" class="com.arjuna.ats.arjuna.common.RecoveryEnvironmentBean">
+    <constructor factoryClass="com.arjuna.ats.arjuna.common.recoveryPropertyManager" factoryMethod="getRecoveryEnvironmentBean"/>
     <property name="recoveryInetAddress">localhost</property>
     <property name="recoveryPort">4712</property>
     <property name="transactionStatusManagerInetAddress">localhost</property>
@@ -29,47 +29,58 @@
       <null/>
     </property>
   </bean>
-  
-  <bean name="CoreEnvironmentBean">
+
+  <bean name="CoreEnvironmentBean" class="com.arjuna.ats.arjuna.common.CoreEnvironmentBean">
     <constructor factoryClass="com.arjuna.ats.arjuna.common.arjPropertyManager" factoryMethod="getCoreEnvironmentBean"/>
-    <property name="socketProcessIdPort">0</property>    
+    <property name="socketProcessIdPort">0</property>
     <property name="nodeIdentifier">1</property>
     <property name="socketProcessIdMaxPorts">10</property>
   </bean>
-  
-  <bean name="CoordinatorEnvironmentBean">
+
+  <bean name="CoordinatorEnvironmentBean" class="com.arjuna.ats.arjuna.common.CoordinatorEnvironmentBean">
     <constructor factoryClass="com.arjuna.ats.arjuna.common.arjPropertyManager" factoryMethod="getCoordinatorEnvironmentBean"/>
     <property name="enableStatistics">false</property>
     <property name="defaultTimeout">300</property>
   </bean>
-  
-  <bean name="ObjectStoreEnvironmentBean">
+
+  <bean name="ObjectStoreEnvironmentBean" class="com.arjuna.ats.arjuna.common.ObjectStoreEnvironmentBean">
     <constructor factoryClass="com.arjuna.ats.arjuna.common.arjPropertyManager" factoryMethod="getObjectStoreEnvironmentBean"/>
     <property name="objectStoreDir">${jboss.jca.home}/tmp/tx-object-store</property>
   </bean>
-  
-  <bean name="JTAEnvironmentBean">
+
+  <bean name="ObjectStoreBrowserBean" class="com.arjuna.ats.arjuna.tools.osb.mbean.ObjStoreBean">
+    <constructor factoryClass="com.arjuna.ats.arjuna.tools.osb.mbean.ObjStoreBean" factoryMethod="getObjectStoreBrowserBean"/>
+    <depends>ObjectStoreEnvironmentBean</depends>
+  </bean>
+
+  <bean name="JTAEnvironmentBean" class="com.arjuna.ats.jta.common.JTAEnvironmentBean">
     <constructor factoryClass="com.arjuna.ats.jta.common.jtaPropertyManager" factoryMethod="getJTAEnvironmentBean"/>
     <property name="lastResourceOptimisationInterface">org.jboss.tm.LastResource</property>
-    <property name="jtaTMImplementation">com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate</property>
-    <property name="jtaUTImplementation">com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple</property>
-    <property name="jtaTSRImplementation">com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple</property>
+    <property name="transactionManagerClassName">com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate</property>
+    <property name="userTransactionClassName">com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple</property>
+    <property name="transactionSynchronizationRegistryClassName">com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple</property>
     <property name="xaRecoveryNodes">
       <list elementClass="java.lang.String">
         <value>1</value>
       </list>
     </property>
+    <property name="xaResourceOrphanFilterClassNames">
+      <list elementClass="java.lang.String">
+        <value>com.arjuna.ats.internal.jta.recovery.arjunacore.JTATransactionLogXAResourceOrphanFilter</value>
+        <value>com.arjuna.ats.internal.jta.recovery.arjunacore.JTANodeNameXAResourceOrphanFilter</value>
+      </list>
+    </property>
   </bean>
-  
+
   <bean name="RecoveryManager" class="com.arjuna.ats.jbossatx.jta.RecoveryManagerService">
     <depends>LoggingEnvironmentBean</depends>
     <depends>RecoveryEnvironmentBean</depends>
   </bean>
-  
+
   <bean name="XATerminator" class="com.arjuna.ats.internal.jbossatx.jta.jca.XATerminator"/>
-  
+
   <bean name="TransactionSynchronizationRegistry" class="com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple"/>
-  
+
   <bean name="TransactionManager" class="com.arjuna.ats.jbossatx.jta.TransactionManagerService">
     <property name="jbossXATerminator"><inject bean="XATerminator"/></property>
     <property name="transactionSynchronizationRegistry"><inject bean="TransactionSynchronizationRegistry"/></property>
@@ -85,69 +96,77 @@
     <depends>TransactionPropagationContextImporterJNDIBinding</depends>
     <depends>TransactionPropagationContextExporterJNDIBinding</depends>
   </bean>
-  
-  <bean name="TransactionStatistics">
+
+  <bean name="TransactionStatistics" class="com.arjuna.ats.arjuna.coordinator.TxStats">
     <constructor factoryClass="com.arjuna.ats.arjuna.coordinator.TxStats" factoryMethod="getInstance"/>
   </bean>
-  
+
   <bean name="TransactionManagerJNDIBinding" class="com.arjuna.ats.jta.utils.JNDIReferenceBindingBean">
     <property name="bindName">java:/TransactionManager</property>
     <property name="className">
-      <inject bean="JTAEnvironmentBean" property="jtaTMImplementation"/>
+      <inject bean="JTAEnvironmentBean" property="transactionManagerClassName"/>
     </property>
     <property name="factory">
-      <inject bean="JTAEnvironmentBean" property="jtaTMImplementation"/>
+      <inject bean="JTAEnvironmentBean" property="transactionManagerClassName"/>
     </property>
-    
+
     <install method="bind"/>
     <uninstall method="unbind"/>
 
     <depends>NamingServer</depends>
   </bean>
-  
+
   <bean name="TransactionSynchronizationRegistryJNDIBinding" class="com.arjuna.ats.jta.utils.JNDIReferenceBindingBean">
     <property name="bindName">java:/TransactionSynchronizationRegistry</property>
     <property name="className">
-      <inject bean="JTAEnvironmentBean" property="jtaTSRImplementation"/>
+      <inject bean="JTAEnvironmentBean" property="transactionSynchronizationRegistryClassName"/>
     </property>
     <property name="factory">
-      <inject bean="JTAEnvironmentBean" property="jtaTSRImplementation"/>
+      <inject bean="JTAEnvironmentBean" property="transactionSynchronizationRegistryClassName"/>
     </property>
-    
+
     <install method="bind"/>
     <uninstall method="unbind"/>
 
     <depends>NamingServer</depends>
   </bean>
-    
+
   <bean name="TransactionPropagationContextImporterJNDIBinding" class="com.arjuna.ats.jta.utils.JNDIReferenceBindingBean">
     <property name="bindName">java:/TransactionPropagationContextImporter</property>
     <property name="className">com.arjuna.ats.internal.jbossatx.jta.PropagationContextManager</property>
     <property name="factory">com.arjuna.ats.internal.jbossatx.jta.PropagationContextManager</property>
-    
+
     <install method="bind"/>
     <uninstall method="unbind"/>
 
     <depends>NamingServer</depends>
   </bean>
-  
+
   <bean name="TransactionPropagationContextExporterJNDIBinding" class="com.arjuna.ats.jta.utils.JNDIReferenceBindingBean">
     <property name="bindName">java:/TransactionPropagationContextExporter</property>
     <property name="className">com.arjuna.ats.internal.jbossatx.jta.PropagationContextManager</property>
     <property name="factory">com.arjuna.ats.internal.jbossatx.jta.PropagationContextManager</property>
-    
+
     <install method="bind"/>
     <uninstall method="unbind"/>
 
     <depends>NamingServer</depends>
   </bean>
-  
+
+  <!-- Ensure TransactionPropagationContextUtil's ref to TransactionPropagationContextFactory is set. See JBAS-7784. -->
+  <bean name="TransactionPropagationContextFactory" class="org.jboss.tm.TransactionPropagationContextFactory">
+    <constructor factoryClass="org.jboss.tm.TransactionPropagationContextUtil" factoryMethod="getTPCFactory"/>
+    <!--  The factory method looks up the JNDI binding, so we depend on it -->
+    <depends>TransactionPropagationContextExporterJNDIBinding</depends>
+  </bean>
+
+  <!-- Make javax.transaction.TransactionManager available for injection -->
   <bean name="RealTransactionManager">
     <constructor factoryMethod="getTransactionManager">
       <factory bean="TransactionManager"/>
     </constructor>
   </bean>
-  
+
   <!-- Handles user transaction providers and listeners -->
   <bean name="UserTransactionRegistry" class="org.jboss.tm.usertx.UserTransactionRegistry">
     <!-- Register providers -->

Modified: projects/jboss-jca/trunk/ivy.xml
===================================================================
--- projects/jboss-jca/trunk/ivy.xml	2010-05-18 13:09:49 UTC (rev 104927)
+++ projects/jboss-jca/trunk/ivy.xml	2010-05-18 13:20:44 UTC (rev 104928)
@@ -45,8 +45,6 @@
     <dependency org="javax.activation" name="activation" rev="${version.activation}" conf="standalone->default;sjc->*"/>
     <dependency org="javax.validation" name="validation-api" rev="${version.validation-api}" conf="standalone->default;sjc->*"/>
     <dependency org="javax.xml.bind" name="jaxb-api" rev="${version.jaxb.api}" conf="standalone->default;sjc->*"/>
-    <dependency org="jboss.jbossts" name="jbossjts" rev="${version.jboss.ts}" conf="standalone->default;sjc->*"/>
-    <dependency org="jboss.jbossts" name="jbossjts-integration" rev="${version.jboss.ts}" conf="standalone->default;sjc->*"/>
     <dependency org="jdepend" name="jdepend" rev="${version.jdepend}" conf="standalone->default;sjc->*"/>
     <dependency org="junit" name="junit" rev="${version.junit}" conf="test->default"/>
     <dependency org="log4j" name="log4j" rev="${version.apache-log4j}" conf="standalone->default;sjc->*"/>
@@ -75,6 +73,8 @@
     <dependency org="org.jboss.integration" name="jboss-integration" rev="${version.jboss.integration}" conf="standalone->default;sjc->*"/>
     <dependency org="org.jboss.javaee" name="jboss-jaspi-api" rev="${version.jboss.jaspi.api}" conf="standalone->default;sjc->*"/>
     <dependency org="org.jboss.javaee" name="jboss-transaction-api" rev="${version.transaction.api}" conf="standalone->default;sjc->*"/>
+    <dependency org="org.jboss.jbossts" name="jbossjts" rev="${version.jboss.ts}" conf="standalone->default;sjc->*"/>
+    <dependency org="org.jboss.jbossts" name="jbossjts-integration" rev="${version.jboss.ts}" conf="standalone->default;sjc->*"/>
     <dependency org="org.jboss.logging" name="jboss-logging-jdk" rev="${version.jboss.logging}" conf="standalone->default;sjc->*"/>
     <dependency org="org.jboss.logging" name="jboss-logging-log4j" rev="${version.jboss.logging}" conf="standalone->default;sjc->*"/>
     <dependency org="org.jboss.logging" name="jboss-logging-logmanager" rev="${version.jboss.logging}" conf="standalone->default;sjc->*"/>

Modified: projects/jboss-jca/trunk/sjc/src/main/resources/bootstrap/transaction.xml
===================================================================
--- projects/jboss-jca/trunk/sjc/src/main/resources/bootstrap/transaction.xml	2010-05-18 13:09:49 UTC (rev 104927)
+++ projects/jboss-jca/trunk/sjc/src/main/resources/bootstrap/transaction.xml	2010-05-18 13:20:44 UTC (rev 104928)
@@ -3,12 +3,12 @@
 <deployment>
 
   <bean name="LoggingEnvironmentBean" class="com.arjuna.common.internal.util.logging.LoggingEnvironmentBean">
-    <constructor factoryClass="com.arjuna.common.internal.util.logging.commonPropertyManager" factoryMethod="getLoggingEnvironmentBean"/>
+    <constructor factoryClass="com.arjuna.common.internal.util.logging.commonPropertyManager" factoryMethod="getLoggingEnvironmentBean"/>        
     <property name="loggingFactory">com.arjuna.common.internal.util.logging.jakarta.JakartaRelevelingLogFactory;com.arjuna.common.internal.util.logging.jakarta.Log4JLogger</property>
   </bean>
-  
-  <bean name="RecoveryEnvironmentBean">
-    <constructor factoryClass="com.arjuna.ats.arjuna.common.recoveryPropertyManager" factoryMethod="getRecoveryEnvironmentBean"/>    
+
+  <bean name="RecoveryEnvironmentBean" class="com.arjuna.ats.arjuna.common.RecoveryEnvironmentBean">
+    <constructor factoryClass="com.arjuna.ats.arjuna.common.recoveryPropertyManager" factoryMethod="getRecoveryEnvironmentBean"/>
     <property name="recoveryInetAddress">localhost</property>
     <property name="recoveryPort">4712</property>
     <property name="transactionStatusManagerInetAddress">localhost</property>
@@ -29,47 +29,58 @@
       <null/>
     </property>
   </bean>
-  
-  <bean name="CoreEnvironmentBean">
+
+  <bean name="CoreEnvironmentBean" class="com.arjuna.ats.arjuna.common.CoreEnvironmentBean">
     <constructor factoryClass="com.arjuna.ats.arjuna.common.arjPropertyManager" factoryMethod="getCoreEnvironmentBean"/>
-    <property name="socketProcessIdPort">0</property>    
+    <property name="socketProcessIdPort">0</property>
     <property name="nodeIdentifier">1</property>
     <property name="socketProcessIdMaxPorts">10</property>
   </bean>
-  
-  <bean name="CoordinatorEnvironmentBean">
+
+  <bean name="CoordinatorEnvironmentBean" class="com.arjuna.ats.arjuna.common.CoordinatorEnvironmentBean">
     <constructor factoryClass="com.arjuna.ats.arjuna.common.arjPropertyManager" factoryMethod="getCoordinatorEnvironmentBean"/>
     <property name="enableStatistics">false</property>
     <property name="defaultTimeout">300</property>
   </bean>
-  
-  <bean name="ObjectStoreEnvironmentBean">
+
+  <bean name="ObjectStoreEnvironmentBean" class="com.arjuna.ats.arjuna.common.ObjectStoreEnvironmentBean">
     <constructor factoryClass="com.arjuna.ats.arjuna.common.arjPropertyManager" factoryMethod="getObjectStoreEnvironmentBean"/>
     <property name="objectStoreDir">${jboss.jca.home}/tmp/tx-object-store</property>
   </bean>
-  
-  <bean name="JTAEnvironmentBean">
+
+  <bean name="ObjectStoreBrowserBean" class="com.arjuna.ats.arjuna.tools.osb.mbean.ObjStoreBean">
+    <constructor factoryClass="com.arjuna.ats.arjuna.tools.osb.mbean.ObjStoreBean" factoryMethod="getObjectStoreBrowserBean"/>
+    <depends>ObjectStoreEnvironmentBean</depends>
+  </bean>
+
+  <bean name="JTAEnvironmentBean" class="com.arjuna.ats.jta.common.JTAEnvironmentBean">
     <constructor factoryClass="com.arjuna.ats.jta.common.jtaPropertyManager" factoryMethod="getJTAEnvironmentBean"/>
     <property name="lastResourceOptimisationInterface">org.jboss.tm.LastResource</property>
-    <property name="jtaTMImplementation">com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate</property>
-    <property name="jtaUTImplementation">com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple</property>
-    <property name="jtaTSRImplementation">com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple</property>
+    <property name="transactionManagerClassName">com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate</property>
+    <property name="userTransactionClassName">com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple</property>
+    <property name="transactionSynchronizationRegistryClassName">com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple</property>
     <property name="xaRecoveryNodes">
       <list elementClass="java.lang.String">
         <value>1</value>
       </list>
     </property>
+    <property name="xaResourceOrphanFilterClassNames">
+      <list elementClass="java.lang.String">
+        <value>com.arjuna.ats.internal.jta.recovery.arjunacore.JTATransactionLogXAResourceOrphanFilter</value>
+        <value>com.arjuna.ats.internal.jta.recovery.arjunacore.JTANodeNameXAResourceOrphanFilter</value>
+      </list>
+    </property>
   </bean>
-  
+
   <bean name="RecoveryManager" class="com.arjuna.ats.jbossatx.jta.RecoveryManagerService">
     <depends>LoggingEnvironmentBean</depends>
     <depends>RecoveryEnvironmentBean</depends>
   </bean>
-  
+
   <bean name="XATerminator" class="com.arjuna.ats.internal.jbossatx.jta.jca.XATerminator"/>
-  
+
   <bean name="TransactionSynchronizationRegistry" class="com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple"/>
-  
+
   <bean name="TransactionManager" class="com.arjuna.ats.jbossatx.jta.TransactionManagerService">
     <property name="jbossXATerminator"><inject bean="XATerminator"/></property>
     <property name="transactionSynchronizationRegistry"><inject bean="TransactionSynchronizationRegistry"/></property>
@@ -85,69 +96,77 @@
     <depends>TransactionPropagationContextImporterJNDIBinding</depends>
     <depends>TransactionPropagationContextExporterJNDIBinding</depends>
   </bean>
-  
-  <bean name="TransactionStatistics">
+
+  <bean name="TransactionStatistics" class="com.arjuna.ats.arjuna.coordinator.TxStats">
     <constructor factoryClass="com.arjuna.ats.arjuna.coordinator.TxStats" factoryMethod="getInstance"/>
   </bean>
-  
+
   <bean name="TransactionManagerJNDIBinding" class="com.arjuna.ats.jta.utils.JNDIReferenceBindingBean">
     <property name="bindName">java:/TransactionManager</property>
     <property name="className">
-      <inject bean="JTAEnvironmentBean" property="jtaTMImplementation"/>
+      <inject bean="JTAEnvironmentBean" property="transactionManagerClassName"/>
     </property>
     <property name="factory">
-      <inject bean="JTAEnvironmentBean" property="jtaTMImplementation"/>
+      <inject bean="JTAEnvironmentBean" property="transactionManagerClassName"/>
     </property>
-    
+
     <install method="bind"/>
     <uninstall method="unbind"/>
 
     <depends>NamingServer</depends>
   </bean>
-  
+
   <bean name="TransactionSynchronizationRegistryJNDIBinding" class="com.arjuna.ats.jta.utils.JNDIReferenceBindingBean">
     <property name="bindName">java:/TransactionSynchronizationRegistry</property>
     <property name="className">
-      <inject bean="JTAEnvironmentBean" property="jtaTSRImplementation"/>
+      <inject bean="JTAEnvironmentBean" property="transactionSynchronizationRegistryClassName"/>
     </property>
     <property name="factory">
-      <inject bean="JTAEnvironmentBean" property="jtaTSRImplementation"/>
+      <inject bean="JTAEnvironmentBean" property="transactionSynchronizationRegistryClassName"/>
     </property>
-    
+
     <install method="bind"/>
     <uninstall method="unbind"/>
 
     <depends>NamingServer</depends>
   </bean>
-    
+
   <bean name="TransactionPropagationContextImporterJNDIBinding" class="com.arjuna.ats.jta.utils.JNDIReferenceBindingBean">
     <property name="bindName">java:/TransactionPropagationContextImporter</property>
     <property name="className">com.arjuna.ats.internal.jbossatx.jta.PropagationContextManager</property>
     <property name="factory">com.arjuna.ats.internal.jbossatx.jta.PropagationContextManager</property>
-    
+
     <install method="bind"/>
     <uninstall method="unbind"/>
 
     <depends>NamingServer</depends>
   </bean>
-  
+
   <bean name="TransactionPropagationContextExporterJNDIBinding" class="com.arjuna.ats.jta.utils.JNDIReferenceBindingBean">
     <property name="bindName">java:/TransactionPropagationContextExporter</property>
     <property name="className">com.arjuna.ats.internal.jbossatx.jta.PropagationContextManager</property>
     <property name="factory">com.arjuna.ats.internal.jbossatx.jta.PropagationContextManager</property>
-    
+
     <install method="bind"/>
     <uninstall method="unbind"/>
 
     <depends>NamingServer</depends>
   </bean>
-  
+
+  <!-- Ensure TransactionPropagationContextUtil's ref to TransactionPropagationContextFactory is set. See JBAS-7784. -->
+  <bean name="TransactionPropagationContextFactory" class="org.jboss.tm.TransactionPropagationContextFactory">
+    <constructor factoryClass="org.jboss.tm.TransactionPropagationContextUtil" factoryMethod="getTPCFactory"/>
+    <!--  The factory method looks up the JNDI binding, so we depend on it -->
+    <depends>TransactionPropagationContextExporterJNDIBinding</depends>
+  </bean>
+
+  <!-- Make javax.transaction.TransactionManager available for injection -->
   <bean name="RealTransactionManager">
     <constructor factoryMethod="getTransactionManager">
       <factory bean="TransactionManager"/>
     </constructor>
   </bean>
-  
+
   <!-- Handles user transaction providers and listeners -->
   <bean name="UserTransactionRegistry" class="org.jboss.tm.usertx.UserTransactionRegistry">
     <!-- Register providers -->

Modified: projects/jboss-jca/trunk/standalone/src/main/resources/bootstrap/transaction.xml
===================================================================
--- projects/jboss-jca/trunk/standalone/src/main/resources/bootstrap/transaction.xml	2010-05-18 13:09:49 UTC (rev 104927)
+++ projects/jboss-jca/trunk/standalone/src/main/resources/bootstrap/transaction.xml	2010-05-18 13:20:44 UTC (rev 104928)
@@ -3,24 +3,26 @@
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
   <bean name="LoggingEnvironmentBean" class="com.arjuna.common.internal.util.logging.LoggingEnvironmentBean">
+    <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.jta:name=LoggingEnvironmentBean", exposedInterface=com.arjuna.common.internal.util.logging.LoggingEnvironmentBeanMBean.class, registerDirectly=true)</annotation>
     <constructor factoryClass="com.arjuna.common.internal.util.logging.commonPropertyManager" factoryMethod="getLoggingEnvironmentBean"/>
     <property name="loggingFactory">com.arjuna.common.internal.util.logging.jakarta.JakartaRelevelingLogFactory;com.arjuna.common.internal.util.logging.jakarta.Log4JLogger</property>
   </bean>
-  
-  <bean name="RecoveryEnvironmentBean">
-    <constructor factoryClass="com.arjuna.ats.arjuna.common.recoveryPropertyManager" factoryMethod="getRecoveryEnvironmentBean"/>    
+
+  <bean name="RecoveryEnvironmentBean" class="com.arjuna.ats.arjuna.common.RecoveryEnvironmentBean">
+    <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.jta:name=RecoveryEnvironmentBean", exposedInterface=com.arjuna.ats.arjuna.common.RecoveryEnvironmentBeanMBean.class, registerDirectly=true)</annotation>
+    <constructor factoryClass="com.arjuna.ats.arjuna.common.recoveryPropertyManager" factoryMethod="getRecoveryEnvironmentBean"/>
     <property name="recoveryInetAddress">localhost</property>
     <property name="recoveryPort">4712</property>
     <property name="transactionStatusManagerInetAddress">localhost</property>
     <property name="transactionStatusManagerPort">4713</property>
-    <property name="recoveryExtensions">
+    <property name="recoveryExtensions" preinstantiate="false">
       <list elementClass="java.lang.String">
         <value>com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule</value>
         <value>com.arjuna.ats.internal.txoj.recovery.TORecoveryModule</value>
         <value>com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule</value>
       </list>
     </property>
-    <property name="expiryScanners">
+    <property name="expiryScanners" preinstantiate="false">
       <list elementClass="java.lang.String">
         <value>com.arjuna.ats.internal.arjuna.recovery.ExpiredTransactionStatusManagerScanner</value>
       </list>
@@ -29,97 +31,115 @@
       <null/>
     </property>
   </bean>
-  
-  <bean name="CoreEnvironmentBean">
+
+  <bean name="CoreEnvironmentBean" class="com.arjuna.ats.arjuna.common.CoreEnvironmentBean">
+    <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.jta:name=CoreEnvironmentBean", exposedInterface=com.arjuna.ats.arjuna.common.CoreEnvironmentBeanMBean.class, registerDirectly=true)</annotation>
     <constructor factoryClass="com.arjuna.ats.arjuna.common.arjPropertyManager" factoryMethod="getCoreEnvironmentBean"/>
-    <property name="socketProcessIdPort">0</property>    
+    <property name="socketProcessIdPort">0</property>
     <property name="nodeIdentifier">1</property>
     <property name="socketProcessIdMaxPorts">10</property>
   </bean>
-  
-  <bean name="CoordinatorEnvironmentBean">
+
+  <bean name="CoordinatorEnvironmentBean" class="com.arjuna.ats.arjuna.common.CoordinatorEnvironmentBean">
+    <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.jta:name=CoordinatorEnvironmentBean", exposedInterface=com.arjuna.ats.arjuna.common.CoordinatorEnvironmentBeanMBean.class, registerDirectly=true)</annotation>
     <constructor factoryClass="com.arjuna.ats.arjuna.common.arjPropertyManager" factoryMethod="getCoordinatorEnvironmentBean"/>
     <property name="enableStatistics">false</property>
     <property name="defaultTimeout">300</property>
   </bean>
-  
-  <bean name="ObjectStoreEnvironmentBean">
+
+  <bean name="ObjectStoreEnvironmentBean" class="com.arjuna.ats.arjuna.common.ObjectStoreEnvironmentBean">
+    <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.jta:name=ObjectStoreEnvironmentBean", exposedInterface=com.arjuna.ats.arjuna.common.ObjectStoreEnvironmentBeanMBean.class, registerDirectly=true)</annotation>
     <constructor factoryClass="com.arjuna.ats.arjuna.common.arjPropertyManager" factoryMethod="getObjectStoreEnvironmentBean"/>
-    <property name="objectStoreDir">${jboss.jca.home}/tmp/tx-object-store</property>
+    <property name="objectStoreDir">${jboss.server.data.dir}/tx-object-store</property>
   </bean>
-  
-  <bean name="JTAEnvironmentBean">
+
+  <bean name="ObjectStoreBrowserBean" class="com.arjuna.ats.arjuna.tools.osb.mbean.ObjStoreBean">
+    <constructor factoryClass="com.arjuna.ats.arjuna.tools.osb.mbean.ObjStoreBean" factoryMethod="getObjectStoreBrowserBean"/>
+    <demand state="Create">ObjectStoreEnvironmentBean</demand>
+  </bean>
+
+  <bean name="JTAEnvironmentBean" class="com.arjuna.ats.jta.common.JTAEnvironmentBean">
+    <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.jta:name=JTAEnvironmentBean", exposedInterface=com.arjuna.ats.jta.common.JTAEnvironmentBeanMBean.class, registerDirectly=true)</annotation>
     <constructor factoryClass="com.arjuna.ats.jta.common.jtaPropertyManager" factoryMethod="getJTAEnvironmentBean"/>
     <property name="lastResourceOptimisationInterface">org.jboss.tm.LastResource</property>
-    <property name="jtaTMImplementation">com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate</property>
-    <property name="jtaUTImplementation">com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple</property>
-    <property name="jtaTSRImplementation">com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple</property>
-    <property name="xaRecoveryNodes">
+    <property name="transactionManagerClassName">com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate</property>
+    <property name="userTransactionClassName">com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple</property>
+    <property name="transactionSynchronizationRegistryClassName">com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple</property>
+    <property name="xaRecoveryNodes" preinstantiate="false">
       <list elementClass="java.lang.String">
         <value>1</value>
       </list>
     </property>
+    <property name="xaResourceOrphanFilterClassNames" preinstantiate="false">
+      <list elementClass="java.lang.String">
+        <value>com.arjuna.ats.internal.jta.recovery.arjunacore.JTATransactionLogXAResourceOrphanFilter</value>
+        <value>com.arjuna.ats.internal.jta.recovery.arjunacore.JTANodeNameXAResourceOrphanFilter</value>
+      </list>
+    </property>
   </bean>
-  
+
   <bean name="RecoveryManager" class="com.arjuna.ats.jbossatx.jta.RecoveryManagerService">
-    <depends>LoggingEnvironmentBean</depends>
-    <depends>RecoveryEnvironmentBean</depends>
+    <demand state="Create">LoggingEnvironmentBean</demand>
+    <demand state="Create">RecoveryEnvironmentBean</demand>
   </bean>
-  
+
   <bean name="XATerminator" class="com.arjuna.ats.internal.jbossatx.jta.jca.XATerminator"/>
-  
+
   <bean name="TransactionSynchronizationRegistry" class="com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple"/>
-  
+
   <bean name="TransactionManager" class="com.arjuna.ats.jbossatx.jta.TransactionManagerService">
+    <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss:service=TransactionManager", exposedInterface=com.arjuna.ats.jbossatx.jta.TransactionManagerServiceMBean.class, registerDirectly=true)</annotation>
+    <annotation>@org.jboss.managed.api.annotation.ManagementObject(name="TransactionManager",componentType=@org.jboss.managed.api.annotation.ManagementComponent(type = "MCBean", subtype = "JTA"),targetInterface=com.arjuna.ats.jbossatx.jta.TransactionManagerServiceMBean.class)</annotation>
     <property name="jbossXATerminator"><inject bean="XATerminator"/></property>
     <property name="transactionSynchronizationRegistry"><inject bean="TransactionSynchronizationRegistry"/></property>
-    <depends>LoggingEnvironmentBean</depends>
-    <depends>RecoveryEnvironmentBean</depends>
-    <depends>CoreEnvironmentBean</depends>
-    <depends>CoordinatorEnvironmentBean</depends>
-    <depends>ObjectStoreEnvironmentBean</depends>
-    <depends>JTAEnvironmentBean</depends>
-    <depends>RecoveryManager</depends>
-    <depends>TransactionManagerJNDIBinding</depends>
-    <depends>TransactionSynchronizationRegistryJNDIBinding</depends>
-    <depends>TransactionPropagationContextImporterJNDIBinding</depends>
-    <depends>TransactionPropagationContextExporterJNDIBinding</depends>
+    <demand state="Create">LoggingEnvironmentBean</demand>
+    <demand state="Create">RecoveryEnvironmentBean</demand>
+    <demand state="Create">CoreEnvironmentBean</demand>
+    <demand state="Create">CoordinatorEnvironmentBean</demand>
+    <demand state="Create">ObjectStoreEnvironmentBean</demand>
+    <demand state="Create">JTAEnvironmentBean</demand>
+    <demand>RecoveryManager</demand>
+    <!-- the TransactionManager itself does not depend on JNDI, but some things that expect to be able to do
+         JNDI lookups express a dependency on the TM rather than the JNDI bindings, so we need to placate them -->
+    <demand>TransactionManagerJNDIBinding</demand>
+    <demand>TransactionSynchronizationRegistryJNDIBinding</demand>
+    <demand>TransactionPropagationContextImporterJNDIBinding</demand>
+    <demand>TransactionPropagationContextExporterJNDIBinding</demand>
   </bean>
-  
-  <bean name="TransactionStatistics">
+
+  <bean name="TransactionStatistics" class="com.arjuna.ats.arjuna.coordinator.TxStats">
+    <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.jta:name=TransactionStatistics", exposedInterface=com.arjuna.ats.arjuna.coordinator.TxStatsMBean.class, registerDirectly=true)</annotation>
+    <annotation>@org.jboss.managed.api.annotation.ManagementObject(name="TransactionStatistics",componentType=@org.jboss.managed.api.annotation.ManagementComponent(type = "MCBean", subtype = "JTA"),targetInterface=com.arjuna.ats.arjuna.coordinator.TxStatsMBean.class)</annotation>
     <constructor factoryClass="com.arjuna.ats.arjuna.coordinator.TxStats" factoryMethod="getInstance"/>
   </bean>
-  
+
   <bean name="TransactionManagerJNDIBinding" class="com.arjuna.ats.jta.utils.JNDIReferenceBindingBean">
     <property name="bindName">java:/TransactionManager</property>
     <property name="className">
-      <inject bean="JTAEnvironmentBean" property="jtaTMImplementation"/>
+      <inject bean="JTAEnvironmentBean" property="transactionManagerClassName"/>
     </property>
     <property name="factory">
-      <inject bean="JTAEnvironmentBean" property="jtaTMImplementation"/>
+      <inject bean="JTAEnvironmentBean" property="transactionManagerClassName"/>
     </property>
     
     <install method="bind"/>
     <uninstall method="unbind"/>
-    
-    <depends>NamingServer</depends>
   </bean>
-  
+
   <bean name="TransactionSynchronizationRegistryJNDIBinding" class="com.arjuna.ats.jta.utils.JNDIReferenceBindingBean">
+    <!-- It's the job of individual components (EJB3, web, etc) to copy the ref to the java:/comp space) -->
     <property name="bindName">java:/TransactionSynchronizationRegistry</property>
     <property name="className">
-      <inject bean="JTAEnvironmentBean" property="jtaTSRImplementation"/>
+      <inject bean="JTAEnvironmentBean" property="transactionSynchronizationRegistryClassName"/>
     </property>
     <property name="factory">
-      <inject bean="JTAEnvironmentBean" property="jtaTSRImplementation"/>
+      <inject bean="JTAEnvironmentBean" property="transactionSynchronizationRegistryClassName"/>
     </property>
     
     <install method="bind"/>
     <uninstall method="unbind"/>
-    
-    <depends>NamingServer</depends>
   </bean>
-    
+
   <bean name="TransactionPropagationContextImporterJNDIBinding" class="com.arjuna.ats.jta.utils.JNDIReferenceBindingBean">
     <property name="bindName">java:/TransactionPropagationContextImporter</property>
     <property name="className">com.arjuna.ats.internal.jbossatx.jta.PropagationContextManager</property>
@@ -127,27 +147,31 @@
     
     <install method="bind"/>
     <uninstall method="unbind"/>
-    
-    <depends>NamingServer</depends>
   </bean>
-  
+
   <bean name="TransactionPropagationContextExporterJNDIBinding" class="com.arjuna.ats.jta.utils.JNDIReferenceBindingBean">
     <property name="bindName">java:/TransactionPropagationContextExporter</property>
     <property name="className">com.arjuna.ats.internal.jbossatx.jta.PropagationContextManager</property>
     <property name="factory">com.arjuna.ats.internal.jbossatx.jta.PropagationContextManager</property>
-    
+
     <install method="bind"/>
     <uninstall method="unbind"/>
-    
-    <depends>NamingServer</depends>
   </bean>
+
+  <!-- Ensure TransactionPropagationContextUtil's ref to TransactionPropagationContextFactory is set. See JBAS-7784. -->
+  <bean name="TransactionPropagationContextFactory" class="org.jboss.tm.TransactionPropagationContextFactory">
+    <constructor factoryClass="org.jboss.tm.TransactionPropagationContextUtil" factoryMethod="getTPCFactory"/>
+    <!--  The factory method looks up the JNDI binding, so we depend on it -->
+    <depends>TransactionPropagationContextExporterJNDIBinding</depends>
+  </bean>
   
+  <!-- Make javax.transaction.TransactionManager available for injection -->
   <bean name="RealTransactionManager">
     <constructor factoryMethod="getTransactionManager">
       <factory bean="TransactionManager"/>
     </constructor>
   </bean>
-  
+
   <!-- Handles user transaction providers and listeners -->
   <bean name="UserTransactionRegistry" class="org.jboss.tm.usertx.UserTransactionRegistry">
     <!-- Register providers -->
@@ -162,7 +186,7 @@
   <!-- The provider for default in process UserTransactions -->
   <bean name="DefaultUserTransactionprovider" class="org.jboss.tm.usertx.client.ServerVMClientUserTransaction">
     <constructor factoryClass="org.jboss.tm.usertx.client.ServerVMClientUserTransaction" factoryMethod="getSingleton"/>
-    <depends>TransactionManager</depends>
+    <demand>TransactionManager</demand>
   </bean>
-  
+
 </deployment>




More information about the jboss-cvs-commits mailing list