[jboss-svn-commits] JBL Code SVN: r13796 - in labs/jbossesb/trunk/product/rosetta: src/org/jboss/soa/esb/listeners/gateway and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jul 26 15:08:32 EDT 2007
Author: kevin.conner at jboss.com
Date: 2007-07-26 15:08:31 -0400 (Thu, 26 Jul 2007)
New Revision: 13796
Modified:
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPoolContainer.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/AbstractFileGateway.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HibernateInterceptor.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/ReadOnlyRemoteGatewayListener.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/jca/JcaInflowGateway.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/lifecycle/AbstractManagedLifecycle.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/lifecycle/AbstractThreadedManagedLifecycle.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java
labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/JMSGatewayListenerIntegrationTest.java
labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListenerUnitTest.java
Log:
Fixed JMS contextualisation and threaded doDestroy handling: JBESB-756 and JBESB-694
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPoolContainer.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPoolContainer.java 2007-07-26 18:40:29 UTC (rev 13795)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPoolContainer.java 2007-07-26 19:08:31 UTC (rev 13796)
@@ -30,6 +30,7 @@
import javax.jms.JMSException;
import org.jboss.soa.esb.addressing.eprs.JMSEpr;
+import org.jboss.soa.esb.lifecycle.LifecycleIdentity;
/**
* This is a temporary pooling class until we start using JCA. It is designed to build
@@ -40,11 +41,11 @@
*/
public class JmsConnectionPoolContainer{
/**
- * Container of all the pools in the system.
+ * Contextualised container of all the pools in the system.
*/
- private static ConcurrentHashMap<Map<String, String>, JmsConnectionPool> poolMap
- = new ConcurrentHashMap<Map<String, String>, JmsConnectionPool>();
-
+ private static Map<String, Map<Map<String, String>, JmsConnectionPool>> poolMaps
+ = new HashMap<String, Map<Map<String, String>, JmsConnectionPool>>();
+
/**
* Returns the pool given a JMSEpr.
*
@@ -68,6 +69,7 @@
public static JmsConnectionPool getPool(Properties enviroment, String connectionFactory, String destinationType)
{
Map<String,String> poolKey = createPoolKey(enviroment, connectionFactory, destinationType);
+ final Map<Map<String, String>, JmsConnectionPool> poolMap = getOrCreatePoolMap() ;
if (poolMap.containsKey(poolKey)) {
return poolMap.get(poolKey);
} else {
@@ -116,7 +118,8 @@
*
*/
public static int getNumberOfPools() {
- return poolMap.size();
+ final Map<Map<String, String>, JmsConnectionPool> poolMap = getPoolMap() ;
+ return (poolMap == null ? 0 : poolMap.size());
}
/**
* Removes the poolKey from the poolMap.
@@ -124,7 +127,8 @@
* @param poolKey
*/
protected static void removePool(Map<String, String> poolKey) {
- if (poolMap.containsKey(poolKey)) {
+ final Map<Map<String, String>, JmsConnectionPool> poolMap = getPoolMap() ;
+ if ((poolMap != null) && poolMap.containsKey(poolKey)) {
poolMap.remove(poolKey);
}
}
@@ -134,6 +138,7 @@
* @param poolKey
*/
protected static void addToPool(Map<String, String> poolKey, JmsConnectionPool pool) {
+ final Map<Map<String, String>, JmsConnectionPool> poolMap = getOrCreatePoolMap() ;
if (!poolMap.containsKey(poolKey)) {
poolMap.put(poolKey, pool);
}
@@ -143,8 +148,44 @@
*
*/
public static void removeAllPools() throws JMSException{
- for (Map<String,String> poolKey : poolMap.keySet()) {
- poolMap.get(poolKey).removeSessionPool();
+ final Map<Map<String, String>, JmsConnectionPool> poolMap = removePoolMap() ;
+ if (poolMap != null) {
+ for (Map<String,String> poolKey : poolMap.keySet()) {
+ poolMap.get(poolKey).removeSessionPool();
+ }
}
}
+
+ /**
+ * Remove the pool map associated with the current thread.
+ * @return The map being removed.
+ */
+ private static synchronized Map<Map<String, String>, JmsConnectionPool> removePoolMap() {
+ final String lifecycleIdentity = LifecycleIdentity.getSingleton().getThreadLifecycleIdentity() ;
+ return poolMaps.remove(lifecycleIdentity) ;
+ }
+
+ /**
+ * Get the pool map associated with the current thread.
+ * @return The pool map or null if not present.
+ */
+ private static synchronized Map<Map<String, String>, JmsConnectionPool> getPoolMap() {
+ final String lifecycleIdentity = LifecycleIdentity.getSingleton().getThreadLifecycleIdentity() ;
+ return poolMaps.get(lifecycleIdentity) ;
+ }
+
+ /**
+ * Get or create the pool map associated with the current thread.
+ * @return The pool map.
+ */
+ private static synchronized Map<Map<String, String>, JmsConnectionPool> getOrCreatePoolMap() {
+ final String lifecycleIdentity = LifecycleIdentity.getSingleton().getThreadLifecycleIdentity() ;
+ Map<Map<String, String>, JmsConnectionPool> map = poolMaps.get(lifecycleIdentity) ;
+ if (map == null)
+ {
+ map = new ConcurrentHashMap<Map<String, String>, JmsConnectionPool>() ;
+ poolMaps.put(lifecycleIdentity, map) ;
+ }
+ return map ;
+ }
}
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/AbstractFileGateway.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/AbstractFileGateway.java 2007-07-26 18:40:29 UTC (rev 13795)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/AbstractFileGateway.java 2007-07-26 19:08:31 UTC (rev 13796)
@@ -335,11 +335,11 @@
}
/**
- * Handle the destroy of the managed instance.
+ * Handle the threaded destroy of the managed instance.
*
* @throws ManagedLifecycleException for errors while destroying.
*/
- protected void doDestroy() throws ManagedLifecycleException {
+ protected void doThreadedDestroy() throws ManagedLifecycleException {
}
/*
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HibernateInterceptor.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HibernateInterceptor.java 2007-07-26 18:40:29 UTC (rev 13795)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HibernateInterceptor.java 2007-07-26 19:08:31 UTC (rev 13796)
@@ -42,6 +42,7 @@
import org.jboss.soa.esb.couriers.CourierFactory;
import org.jboss.soa.esb.couriers.CourierUtil;
import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.lifecycle.LifecycleIdentity;
import org.jboss.soa.esb.listeners.ListenerTagNames;
import org.jboss.soa.esb.listeners.ListenerUtil;
import org.jboss.soa.esb.listeners.RegistryUtil;
@@ -74,7 +75,9 @@
protected ConfigTree m_config;
protected Collection<EPR> m_targetEprs;
- protected String m_targetServiceCategory, m_targetServiceName;
+ protected String m_targetServiceCategory, m_targetServiceName;
+
+ private final String m_activeIdentity ;
// Event Strings
private static final String DELETE_EVENT = "onDelete";
@@ -95,6 +98,7 @@
public HibernateInterceptor(ConfigTree f_config, ArrayList<HibernateEventBean> f_list) throws ManagedLifecycleException {
m_config = f_config;
m_events = f_list;
+ m_activeIdentity = LifecycleIdentity.getSingleton().getThreadLifecycleIdentity() ;
try {
m_targetServiceCategory = ListenerUtil.obtainAtt(m_config,
@@ -126,7 +130,10 @@
*/
private Message createMessage(Object messageObject) {
Object obj = null;
+ final LifecycleIdentity lifecycleIdentity = LifecycleIdentity.getSingleton() ;
+ final String currentIdentity = lifecycleIdentity.getThreadLifecycleIdentity() ;
try {
+ lifecycleIdentity.setThreadLifecycleIdentity(m_activeIdentity) ;
obj = m_processMethod.invoke(m_composer, new Object[] { messageObject });
if (null == obj) {
m_logger.error("Action class method <" + m_processMethod
@@ -138,7 +145,9 @@
m_logger.error("Error creating message", e);
} catch (InvocationTargetException e) {
m_logger.error("Error creating message", e);
- }
+ } finally {
+ lifecycleIdentity.setThreadLifecycleIdentity(currentIdentity) ;
+ }
Message message = (Message) obj;
return message;
}
@@ -150,8 +159,11 @@
private void deliverMessage(Message message) {
Throwable thrown = null;
String text = null;
+ final LifecycleIdentity lifecycleIdentity = LifecycleIdentity.getSingleton() ;
+ final String currentIdentity = lifecycleIdentity.getThreadLifecycleIdentity() ;
try {
+ lifecycleIdentity.setThreadLifecycleIdentity(m_activeIdentity) ;
boolean bSent = false;
for (EPR current : m_targetEprs) {
m_courier = CourierFactory.getCourier(current);
@@ -182,6 +194,8 @@
} catch (IllegalArgumentException e) {
thrown = e;
text = "Courier <" + m_courier.getClass().getName() + ".deliverAsync(Message) FAILED with IllegalArgumentException.";
+ } finally {
+ lifecycleIdentity.setThreadLifecycleIdentity(currentIdentity) ;
}
if (null != thrown) {
m_logger.error(text);
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java 2007-07-26 18:40:29 UTC (rev 13795)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java 2007-07-26 19:08:31 UTC (rev 13796)
@@ -42,6 +42,7 @@
import org.jboss.soa.esb.addressing.EPR;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.helpers.KeyValuePair;
+import org.jboss.soa.esb.lifecycle.LifecycleIdentity;
import org.jboss.soa.esb.listeners.ListenerTagNames;
import org.jboss.soa.esb.listeners.lifecycle.AbstractManagedLifecycle;
import org.jboss.soa.esb.listeners.lifecycle.ManagedLifecycleException;
@@ -298,7 +299,10 @@
* @throws Throwable Message processing failure.
*/
public Object invoke(InvocationRequest invocationRequest) throws Throwable {
+ final LifecycleIdentity lifecycleIdentity = LifecycleIdentity.getSingleton() ;
+ final String currentIdentity = lifecycleIdentity.getThreadLifecycleIdentity() ;
try {
+ lifecycleIdentity.setThreadLifecycleIdentity(getLifecycleIdentity()) ;
if (synchronous) {
Object response = messageDeliveryAdapter.deliverSync(invocationRequest, 20000); // TODO Fix magic number
if(logger.isDebugEnabled()) {
@@ -314,6 +318,8 @@
messageDeliveryAdapter.getDeliveryAdapter().getServiceName() + "].", t);
throw t;
+ } finally {
+ lifecycleIdentity.setThreadLifecycleIdentity(currentIdentity) ;
}
return "<ack/>";
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java 2007-07-26 18:40:29 UTC (rev 13795)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java 2007-07-26 19:08:31 UTC (rev 13796)
@@ -212,11 +212,11 @@
} // ________________________________
/**
- * Handle the destroy of the managed instance.
+ * Handle the threaded destroy of the managed instance.
*
* @throws ManagedLifecycleException for errors while destroying.
*/
- protected void doDestroy() throws ManagedLifecycleException {
+ protected void doThreadedDestroy() throws ManagedLifecycleException {
if (_serviceName != null) {
RegistryUtil.unregister(_serviceCategory, _serviceName, _myEpr);
}
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/ReadOnlyRemoteGatewayListener.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/ReadOnlyRemoteGatewayListener.java 2007-07-26 18:40:29 UTC (rev 13795)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/ReadOnlyRemoteGatewayListener.java 2007-07-26 19:08:31 UTC (rev 13796)
@@ -183,7 +183,7 @@
* Destroys the service and also after that stop the
* remotefileSystemStrategy in use
*/
- protected void doDestroy() throws ManagedLifecycleException
+ protected void doThreadedDestroy() throws ManagedLifecycleException
{
remotefileSystemStrategy.destroy();
super.doDestroy();
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java 2007-07-26 18:40:29 UTC (rev 13795)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java 2007-07-26 19:08:31 UTC (rev 13796)
@@ -242,11 +242,11 @@
} // ________________________________
/**
- * Handle the destroy of the managed instance.
+ * Handle the threaded destroy of the managed instance.
*
* @throws ManagedLifecycleException for errors while destroying.
*/
- protected void doDestroy() throws ManagedLifecycleException {
+ protected void doThreadedDestroy() throws ManagedLifecycleException {
if (_dbConn != null) {
_dbConn.release();
}
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/jca/JcaInflowGateway.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/jca/JcaInflowGateway.java 2007-07-26 18:40:29 UTC (rev 13795)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/jca/JcaInflowGateway.java 2007-07-26 19:08:31 UTC (rev 13796)
@@ -29,6 +29,7 @@
import org.jboss.soa.esb.ConfigurationException;
import org.jboss.soa.esb.services.registry.RegistryException;
import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.lifecycle.LifecycleIdentity;
import org.jboss.soa.esb.listeners.ListenerTagNames;
import org.jboss.soa.esb.listeners.ListenerUtil;
import org.jboss.soa.esb.listeners.ServiceInvoker;
@@ -181,6 +182,7 @@
}
}
final Object theBean = bean;
+
EndpointContainer container = new EndpointContainer()
{
@@ -191,8 +193,11 @@
public Object invoke(Method method, Object[] args) throws Throwable
{
+ final LifecycleIdentity lifecycleIdentity = LifecycleIdentity.getSingleton() ;
+ final String currentIdentity = lifecycleIdentity.getThreadLifecycleIdentity() ;
try
{
+ lifecycleIdentity.setThreadLifecycleIdentity(getLifecycleIdentity()) ;
return method.invoke(theBean, args);
}
catch (IllegalAccessException e)
@@ -203,6 +208,10 @@
{
throw e.getTargetException();
}
+ finally
+ {
+ lifecycleIdentity.setThreadLifecycleIdentity(currentIdentity) ;
+ }
}
public boolean isDeliveryTransacted(Method method) throws NoSuchMethodException
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/lifecycle/AbstractManagedLifecycle.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/lifecycle/AbstractManagedLifecycle.java 2007-07-26 18:40:29 UTC (rev 13795)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/lifecycle/AbstractManagedLifecycle.java 2007-07-26 19:08:31 UTC (rev 13796)
@@ -34,6 +34,7 @@
import org.apache.log4j.Logger;
import org.jboss.soa.esb.ConfigurationException;
import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.lifecycle.LifecycleIdentity;
/**
* This class represents the lifecycle for a managed instance.
@@ -76,8 +77,15 @@
/**
* Instance configuration. Supplied through constructor.
*/
- private ConfigTree config;
+ private final ConfigTree config;
+ /**
+ * The identity of the lifecycle we are attached to.
+ */
+ private final String lifecycleIdentity ;
+ /**
+ * Lifecycle controller for this lifecycle.
+ */
private LifecycleController lifecycleController;
/**
@@ -108,11 +116,11 @@
}
this.config = config;
+
+ lifecycleIdentity = LifecycleIdentity.getSingleton().getThreadLifecycleIdentity() ;
-
lifecycleController = new LifecycleController(this, config);
lifecycleController.registerMBean();
-
}
/**
@@ -126,9 +134,9 @@
public final void initialise()
throws ManagedLifecycleException
{
- changeState(ManagedLifecycleState.INITIALISING) ;
- try
- {
+ changeState(ManagedLifecycleState.INITIALISING) ;
+ try
+ {
doInitialise() ;
changeState(ManagedLifecycleState.INITIALISED) ;
}
@@ -468,7 +476,21 @@
state = ManagedLifecycleState.CONSTRUCTED ;
}
- public ConfigTree getConfig() {
+ /**
+ * Get the configuration associated with this lifecycle.
+ * @return The instance configuration.
+ */
+ protected ConfigTree getConfig()
+ {
return config;
}
+
+ /**
+ * Get the lifecycle identity we are attached to.
+ * @return The lifecycle identity.
+ */
+ protected String getLifecycleIdentity()
+ {
+ return lifecycleIdentity ;
+ }
}
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/lifecycle/AbstractThreadedManagedLifecycle.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/lifecycle/AbstractThreadedManagedLifecycle.java 2007-07-26 18:40:29 UTC (rev 13795)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/lifecycle/AbstractThreadedManagedLifecycle.java 2007-07-26 19:08:31 UTC (rev 13796)
@@ -161,16 +161,28 @@
*
* @throws ManagedLifecycleException for errors while destroying.
*/
- protected void doDestroy()
+ protected final void doDestroy()
throws ManagedLifecycleException
{
if (!waitUntilStopped())
{
throw new ManagedLifecycleException("Thread still active") ;
}
+
+ doThreadedDestroy() ;
}
/**
+ * Handle the threaded destroy of the managed instance.
+ *
+ * @throws ManagedLifecycleException for errors while destroying.
+ */
+ protected void doThreadedDestroy()
+ throws ManagedLifecycleException
+ {
+ }
+
+ /**
* Is the associated thread still running?
* @return true if the thread is still running, false otherwise.
*/
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java 2007-07-26 18:40:29 UTC (rev 13795)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java 2007-07-26 19:08:31 UTC (rev 13796)
@@ -307,18 +307,13 @@
} // ________________________________
/**
- * Handle the destroy of the managed instance.
+ * Handle the threaded destroy of the managed instance.
*
* @throws ManagedLifecycleException for errors while destroying.
*/
- protected void doDestroy()
+ protected void doThreadedDestroy()
throws ManagedLifecycleException
{
- if (!waitForRunningStateChange(ManagedLifecycleThreadState.STOPPED, getTerminationPeriod()))
- {
- throw new ManagedLifecycleException("Failed to reach STOPPED state within specified termination period") ;
- }
-
if (_execService != null)
{
_execService.shutdown() ;
Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/JMSGatewayListenerIntegrationTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/JMSGatewayListenerIntegrationTest.java 2007-07-26 18:40:29 UTC (rev 13795)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/JMSGatewayListenerIntegrationTest.java 2007-07-26 19:08:31 UTC (rev 13796)
@@ -84,7 +84,7 @@
if (!exception)
fail();
- gateway.doDestroy();
+ gateway.doThreadedDestroy();
gateway = new JmsGatewayListener(tree);
Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListenerUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListenerUnitTest.java 2007-07-26 18:40:29 UTC (rev 13795)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListenerUnitTest.java 2007-07-26 19:08:31 UTC (rev 13796)
@@ -182,7 +182,7 @@
gateway.pollForCandidates();
- gateway.doDestroy();
+ gateway.doThreadedDestroy();
gateway.changeStatusToDone();
More information about the jboss-svn-commits
mailing list