[jboss-svn-commits] JBL Code SVN: r25258 - in labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb: listeners/gateway and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Feb 13 14:53:07 EST 2009
Author: mark.little at jboss.com
Date: 2009-02-13 14:53:07 -0500 (Fri, 13 Feb 2009)
New Revision: 25258
Modified:
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.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/gateway/mina/MessageHandler.java
Log:
https://jira.jboss.org/jira/browse/JBESB-2097
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java 2009-02-13 19:29:15 UTC (rev 25257)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java 2009-02-13 19:53:07 UTC (rev 25258)
@@ -175,6 +175,9 @@
} catch (IllegalAccessException iae) {
logger.error("Illegal access while instantiating LoadBalancePolicy class = " + lbClass);
throw new MessageDeliverException(iae.getMessage(), iae);
+ } catch (final RegistryException ex) {
+ logger.error("Problem encountered with the registry: "+ex);
+ throw new MessageDeliverException("Problem encountered with the registry.", ex);
}
}
@@ -263,6 +266,10 @@
} catch (FaultMessageException ex) {
throw new MessageDeliverException("Unexpected FaultMessageException during message delivery.", ex);
}
+ catch (final RegistryException ex)
+ {
+ throw new MessageDeliverException("Problem encountered while using Registry", ex);
+ }
}
/**
@@ -297,7 +304,7 @@
* without error, otherwise an exception is thrown.
* @throws MessageDeliverException Failed to deliver message, after trying all available EPRs.
*/
- private Message post(Message message, EPRInvoker eprInvoker) throws MessageDeliverException, FaultMessageException {
+ private Message post(Message message, EPRInvoker eprInvoker) throws MessageDeliverException, FaultMessageException, RegistryException {
boolean staleEPRCache = true;
boolean initialPass = true;
@@ -318,6 +325,8 @@
message.getContext().setContext(SecurityService.AUTH_REQUEST, encryptedAuthRequest);
}
+ boolean timedout = false;
+
try {
//We are removing dead EPRs from the serviceClusterInfo. *Previous* deliveries maybe have
//removed EPRs that have now come back to life. We should try once more to pull a fresh list of EPRS
@@ -352,7 +361,23 @@
while ((epr = loadBalancer.chooseEPR(serviceClusterInfo)) != null) {
try
{
- replyMessage = eprInvoker.attemptDelivery(message, epr);
+ try
+ {
+ replyMessage = eprInvoker.attemptDelivery(message, epr);
+ }
+ catch (final ResponseTimeoutException ex)
+ {
+ // do this so we can loop through the list of eprs if there's more than one.
+
+ if (serviceClusterInfo.getEPRs().size() == 1)
+ throw ex;
+ else
+ {
+ replyMessage = null;
+ timedout = true;
+ }
+ }
+
if (replyMessage != null) {
if(eprInvoker.synchronous) {
// remove the security context so that it is not exposed to the action pipeline.
@@ -389,7 +414,7 @@
*/
if (("true".equals(message.getProperties().getProperty(Environment.EXCEPTION_ON_DELIVERY_FAILURE, "false")) || exceptionOnDeliveryFailure))
- throw new MessageDeliverException("Failed to deliver message ["+message.getHeader()+"] to Service [" + service + "]. Told not to retry.");
+ throw new MessageDeliverException("Failed to deliver message ["+message.getHeader()+"] to Service [" + service + "]. Told not to retry by 'exceptionOnDeliverFailure' property.");
}
}
catch (MalformedEPRException ex) // so we can differentiate failure modes, since returning null is limiting
@@ -410,8 +435,13 @@
message.getContext().removeContext(SecurityService.AUTH_REQUEST);
}
- // Throw exception if delivery failed...
- throw new MessageDeliverException("Failed to deliver message ["+message.getHeader()+"] to Service [" + service + "]. Check for errors.");
+ if (timedout)
+ throw new ResponseTimeoutException("Failed to get response from service(s).");
+ else
+ {
+ // Throw exception if delivery failed...
+ throw new MessageDeliverException("Failed to deliver message ["+message.getHeader()+"] to Service [" + service + "]. Check for errors.");
+ }
}
/**
@@ -478,9 +508,11 @@
* until we can expect to get updates from the registry. For now this should work
* just fine.
*
- * @throws MessageDeliverException Registry lookup failure.
+ * @throws RegistryException Registry lookup failure.
+ * @throws MessageDeliverException some other error occurs.
*/
- public void loadServiceClusterInfo() throws MessageDeliverException {
+
+ public void loadServiceClusterInfo() throws MessageDeliverException, RegistryException {
List<EPR> serviceEprs = new ArrayList<EPR>();
try {
serviceEprs = RegistryUtil.getEprs(service.getCategory(), service.getName());
@@ -493,9 +525,11 @@
}
}
}
- } catch (ServiceNotFoundException snfe) {
+ } catch (final ServiceNotFoundException snfe) {
logger.info("Service: " + service + " not found in the registry");
- } catch (RegistryException e) {
+
+ throw new RegistryException("Service: " + service + " not found in the registry", snfe);
+ } catch (final Exception e) {
throw new MessageDeliverException(e.getMessage(), e);
}
serviceClusterInfo = new ServiceClusterInfoImpl(service.getName(), serviceEprs);
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 2009-02-13 19:29:15 UTC (rev 25257)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java 2009-02-13 19:53:07 UTC (rev 25258)
@@ -140,7 +140,7 @@
try {
_serviceInvoker = new ServiceInvoker(_targetServiceCategory, _targetServiceName);
_serviceInvoker.loadServiceClusterInfo();
- } catch (MessageDeliverException mde) {
+ } catch (final Exception mde) {
throw new ManagedLifecycleException(mde);
}
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/mina/MessageHandler.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/mina/MessageHandler.java 2009-02-13 19:29:15 UTC (rev 25257)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/mina/MessageHandler.java 2009-02-13 19:53:07 UTC (rev 25258)
@@ -33,7 +33,7 @@
public interface MessageHandler extends IoHandler {
/**
- * Set the {@link ServiceInoker} instance to be used
+ * Set the {@link ServiceInvoker} instance to be used
* to dispatch messages to the ESB Service
*
* @param invoker The ServiceInvoker instance.
More information about the jboss-svn-commits
mailing list