[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