Author: alessio.soldano(a)jboss.com
Date: 2008-01-03 04:58:02 -0500 (Thu, 03 Jan 2008)
New Revision: 5391
Modified:
common/trunk/src/main/java/org/jboss/wsf/common/transport/jms/JMSTransportSupport.java
Log:
[JBWS-1324] JMS Endpoint - Message delivery starts before endpoint is ready: adding
Darran's workaround to the JMSTransportSupport.
Modified:
common/trunk/src/main/java/org/jboss/wsf/common/transport/jms/JMSTransportSupport.java
===================================================================
---
common/trunk/src/main/java/org/jboss/wsf/common/transport/jms/JMSTransportSupport.java 2008-01-02
14:14:14 UTC (rev 5390)
+++
common/trunk/src/main/java/org/jboss/wsf/common/transport/jms/JMSTransportSupport.java 2008-01-03
09:58:02 UTC (rev 5391)
@@ -55,6 +55,7 @@
import org.jboss.wsf.spi.SPIProvider;
import org.jboss.wsf.spi.SPIProviderResolver;
import org.jboss.wsf.spi.deployment.Endpoint;
+import org.jboss.wsf.spi.deployment.Endpoint.EndpointState;
import org.jboss.wsf.spi.invocation.InvocationContext;
import org.jboss.wsf.spi.invocation.RequestHandler;
import org.jboss.wsf.spi.management.EndpointRegistry;
@@ -150,6 +151,25 @@
throw new IllegalStateException("Cannot find endpoint for: " +
fromName);
log.debug("dipatchMessage: " + endpoint.getName());
+
+ // [JBWS-1324]: workaround to prevent message processing before endpoint is
started
+ EndpointState state = endpoint.getState();
+ ObjectName name = endpoint.getName();
+ long startTime = System.currentTimeMillis();
+ log.debug(name + " is in state: " + state);
+ while (state != EndpointState.STARTED && (System.currentTimeMillis() -
startTime < 60000))
+ {
+ try
+ {
+ Thread.sleep(1000);
+ state = endpoint.getState();
+ log.debug(name + " is now in state: " + state);
+ }
+ catch (InterruptedException e)
+ {
+ throw new EJBException(e);
+ }
+ }
RequestHandler reqHandler = endpoint.getRequestHandler();
Show replies by date