[jboss-svn-commits] JBL Code SVN: r24788 - in labs/jbosstm/trunk: atsintegration/classes/com/arjuna/ats/jbossatx/jta and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jan 19 09:49:53 EST 2009


Author: jhalliday
Date: 2009-01-19 09:49:52 -0500 (Mon, 19 Jan 2009)
New Revision: 24788

Modified:
   labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/utils/JNDIManager.java
   labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jta/TransactionManagerService.java
   labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jts/TransactionManagerService.java
Log:
Add unbinding of JNDI names on undeployment of the TransactionManagerService. JBTM-469


Modified: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/utils/JNDIManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/utils/JNDIManager.java	2009-01-19 14:16:18 UTC (rev 24787)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/utils/JNDIManager.java	2009-01-19 14:49:52 UTC (rev 24788)
@@ -93,6 +93,15 @@
     }
 
     /**
+     * Unbind the transaction manager from the default JNDI context.
+     * @throws javax.naming.NamingException
+     */
+    public static void unbindJTATransactionManagerImplementation() throws javax.naming.NamingException
+    {
+        unbindJTATransactionManagerImplementation(new InitialContext());
+    }
+
+    /**
      * Bind the currently configured transaction manager implementation to the JNDI
      * context passed in.
      * @param initialContext
@@ -109,6 +118,16 @@
 	}
 
     /**
+     * Unbind the transaction manager from the provided JNDI context.
+     * @param initialContext
+     * @throws javax.naming.NamingException
+     */
+    public static void unbindJTATransactionManagerImplementation(InitialContext initialContext) throws javax.naming.NamingException
+    {
+        initialContext.unbind(getTransactionManagerJNDIName());
+    }
+
+    /**
      * Bind the currently configured user transaction implementation to the default JNDI
      * context.
      * @throws javax.naming.NamingException
@@ -144,6 +163,15 @@
 		bindJTATransactionSynchronizationRegistryImplementation(new InitialContext());
 	}
 
+    /**
+     * Unbind the TSR from the default JNDI context.
+     * @throws javax.naming.NamingException
+     */
+    public static void unbindJTATransactionSynchronizationRegistryImplementation() throws javax.naming.NamingException
+	{
+		unbindJTATransactionSynchronizationRegistryImplementation(new InitialContext());
+	}
+
 	/**
      * Bind the currently configured TransactionSynchronizationRegistry implementation to the passed in
      * JNDI context.
@@ -169,6 +197,16 @@
         initialContext.rebind(getTransactionSynchronizationRegistryJNDIName(), tsr);
     }
 
+    /**
+     * Unbind the TSR from the provided JNDI context.
+     * @param initialContext
+     * @throws javax.naming.NamingException
+     */
+    public static void unbindJTATransactionSynchronizationRegistryImplementation(InitialContext initialContext) throws javax.naming.NamingException
+	{
+        initialContext.unbind(getTransactionSynchronizationRegistryJNDIName());
+    }
+
 	public final static String getTransactionManagerJNDIName()
 	{
 		return jtaPropertyManager.propertyManager.getProperty(Environment.TM_JNDI_CONTEXT, DEFAULT_TM_JNDI_CONTEXT);

Modified: labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jta/TransactionManagerService.java
===================================================================
--- labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jta/TransactionManagerService.java	2009-01-19 14:16:18 UTC (rev 24787)
+++ labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jta/TransactionManagerService.java	2009-01-19 14:49:52 UTC (rev 24788)
@@ -60,6 +60,7 @@
 import javax.management.*;
 import javax.naming.Reference;
 import javax.naming.InitialContext;
+import javax.naming.NamingException;
 import javax.transaction.TransactionManager;
 import javax.transaction.UserTransaction;
 import java.net.Socket;
@@ -243,6 +244,25 @@
 		JNDIManager.bindJTATransactionSynchronizationRegistryImplementation();
 	}
 
+    public void destroy()
+    {
+        log.info("Destroying TransactionManagerService");
+
+        // unregister the JNDI entries that were registered by create()
+        try
+        {
+            unbind(PROPAGATION_CONTEXT_IMPORTER_JNDI_REFERENCE);
+            unbind(PROPAGATION_CONTEXT_EXPORTER_JNDI_REFERENCE);
+
+            JNDIManager.unbindJTATransactionManagerImplementation();
+            JNDIManager.unbindJTATransactionSynchronizationRegistryImplementation();
+        }
+        catch(NamingException e)
+        {
+            log.warn("Unable to unbind TransactionManagerService JNDI entries ", e);
+        }
+    }
+
     public void start()
     {
         log.info("Starting transaction recovery manager");
@@ -683,6 +703,11 @@
         new InitialContext().bind(jndiName, ref);
     }
 
+    private void unbind(String jndiName) throws NamingException
+    {
+        new InitialContext().unbind(jndiName);
+    }
+
     ///////////////////
 
     // note that the address/port setters rely on having the property manager initialized first, or their settings

Modified: labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jts/TransactionManagerService.java
===================================================================
--- labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jts/TransactionManagerService.java	2009-01-19 14:16:18 UTC (rev 24787)
+++ labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jts/TransactionManagerService.java	2009-01-19 14:49:52 UTC (rev 24788)
@@ -68,6 +68,7 @@
 import javax.management.*;
 import javax.naming.Reference;
 import javax.naming.InitialContext;
+import javax.naming.NamingException;
 import javax.transaction.TransactionManager;
 import javax.transaction.UserTransaction;
 import java.net.Socket;
@@ -203,7 +204,7 @@
         }
         catch (Exception e)
         {
-            log.fatal("Failed to create and register ORB/OA", e);
+            log.fatal("Failed to create and register Propagation Context Manager", e);
         }
 
         /** Bind the transaction manager and tsr JNDI reference **/
@@ -222,6 +223,25 @@
 
     }
 
+    public void destroy()
+    {
+        log.info("Destroying TransactionManagerService");
+
+        // unregister the JNDI entries that were registered by create()
+        try
+        {
+            unbind(PROPAGATION_CONTEXT_IMPORTER_JNDI_REFERENCE);
+            unbind(PROPAGATION_CONTEXT_EXPORTER_JNDI_REFERENCE);
+
+            JNDIManager.unbindJTATransactionManagerImplementation();
+            JNDIManager.unbindJTATransactionSynchronizationRegistryImplementation();
+        }
+        catch(NamingException e)
+        {
+            log.warn("Unable to unbind TransactionManagerService JNDI entries ", e);
+        }
+    }
+
     public void start(org.omg.CORBA.ORB theCorbaORB) throws Exception
     {
         log.info("Starting transaction recovery manager");
@@ -726,6 +746,11 @@
         new InitialContext().bind(jndiName, ref);
     }
 
+    private void unbind(String jndiName) throws NamingException
+    {
+        new InitialContext().unbind(jndiName);
+    }
+
     /**
      * Set the flag indicating whether the propagation context should always be propagated.
      * @param alwaysPropagateContext true if the context should always be propagated, false if only propagated to OTS transactional objects.




More information about the jboss-svn-commits mailing list