[jboss-svn-commits] JBL Code SVN: r23542 - labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Oct 21 22:37:18 EDT 2008


Author: jim.ma
Date: 2008-10-21 22:37:17 -0400 (Tue, 21 Oct 2008)
New Revision: 23542

Modified:
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
Log:
Basicly support http Options Method and return http error message

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java	2008-10-21 20:43:01 UTC (rev 23541)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java	2008-10-22 02:37:17 UTC (rev 23542)
@@ -32,9 +32,11 @@
 import org.jboss.remoting.marshal.http.HTTPMarshaller;
 import org.jboss.remoting.security.SSLSocketBuilder;
 import org.jboss.remoting.transport.Connector;
+import org.jboss.remoting.transport.http.HTTPMetadataConstants;
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.actions.ActionUtils;
 import org.jboss.soa.esb.addressing.EPR;
+import org.jboss.soa.esb.couriers.FaultMessageException;
 import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.helpers.KeyValuePair;
 import org.jboss.soa.esb.listeners.ListenerTagNames;
@@ -330,6 +332,13 @@
     public Object invoke(InvocationRequest invocationRequest) throws Throwable {
         try {
             if (synchronous) {
+              /* This is a quick fix for clients sending HTTP OPTIONS commands
+              *  as a ping. In theory we should examine the request URI and reply accordingly. 
+              * */
+                String method = (String) invocationRequest.getRequestPayload().get("MethodType");
+			    if (method != null && method.equals("OPTIONS")) {
+					return "";
+				}
                 Object response = messageDeliveryAdapter.deliverSync(invocationRequest, 20000); // TODO Fix magic number
                 if(logger.isDebugEnabled()) {
                     logger.debug("Returning response [" + response + "].");
@@ -339,7 +348,25 @@
             } else {
                 messageDeliveryAdapter.deliverAsync(invocationRequest);
             }
-        } catch (Throwable t) {
+        }catch (FaultMessageException fme) {
+           logger.error("JBoss Remoting Gateway failed to " + (synchronous ? "synchronously" : "asynchronously") + " deliver message to target service ["
+					+ messageDeliveryAdapter.getDeliveryAdapter().getServiceCategory() + ":"
+					+ messageDeliveryAdapter.getDeliveryAdapter().getServiceName() + "].", fme);
+			if (fme.getCause() == null) {
+				throw fme;
+			}
+			/*
+			 * This code should go into a MessageComposer but since the
+			 * MessageComposer interface does not have a method to decompose
+			 * exceptions, this will compose an http response that is easier to
+			 * interpret by software and humans than the default CoyoteInvoker
+			 * exception handling.
+			 */
+			invocationRequest.getReturnPayload().put(HTTPMetadataConstants.RESPONSE_CODE, new Integer(500));
+			invocationRequest.getReturnPayload().put(HTTPMetadataConstants.RESPONSE_CODE_MESSAGE, "Server exception type " + fme.getCause().getClass().getSimpleName());
+			return fme.getCause().getMessage();         
+        
+        }catch (Throwable t) {
             logger.error("JBoss Remoting Gateway failed to " + (synchronous ? "synchronously" : "asynchronously") + " deliver message to target service [" +
                     messageDeliveryAdapter.getDeliveryAdapter().getServiceCategory() + ":" +
                     messageDeliveryAdapter.getDeliveryAdapter().getServiceName() + "].", t);




More information about the jboss-svn-commits mailing list