[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