[jboss-svn-commits] JBL Code SVN: r26889 - labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Jun 9 10:41:04 EDT 2009
Author: tfennelly
Date: 2009-06-09 10:41:04 -0400 (Tue, 09 Jun 2009)
New Revision: 26889
Modified:
labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
Log:
https://jira.jboss.org/jira/browse/JBESB-2106
JBR listener doesn't return error to a client
Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java 2009-06-09 14:39:12 UTC (rev 26888)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java 2009-06-09 14:41:04 UTC (rev 26889)
@@ -32,6 +32,7 @@
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;
@@ -58,12 +59,12 @@
import org.jboss.soa.esb.util.ClassUtil;
import javax.management.MBeanServer;
+import javax.security.auth.login.LoginException;
import java.io.Serializable;
-import java.net.InetAddress;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.UnknownHostException;
+import java.io.StringWriter;
+import java.io.PrintWriter;
+import java.net.*;
import java.util.*;
/**
@@ -352,10 +353,25 @@
messageDeliveryAdapter.deliverAsync(invocationRequest);
}
} catch (Throwable t) {
- logger.error("JBoss Remoting Gateway failed to " + (synchronous ? "synchronously" : "asynchronously") + " deliver message to target service [" +
+ logger.debug("JBoss Remoting Gateway failed to " + (synchronous ? "synchronously" : "asynchronously") + " deliver message to target service [" +
messageDeliveryAdapter.getDeliveryAdapter().getServiceCategory() + ":" +
messageDeliveryAdapter.getDeliveryAdapter().getServiceName() + "].", t);
+ if (synchronous) {
+ String protocol = getJbrServerLocatorURI().getScheme();
+ boolean isHttp = (protocol.equals("http") || protocol.equals("https"));
+
+ if(isHttp) {
+ Map responseMap = invocationRequest.getReturnPayload();
+ StringWriter stringWriter = new StringWriter();
+
+ mapHTTPErrorDetails(responseMap, t);
+ t.printStackTrace(new PrintWriter(stringWriter));
+
+ return stringWriter.toString();
+ }
+ }
+
throw t;
}
@@ -366,6 +382,18 @@
}
}
+ private void mapHTTPErrorDetails(Map responseMap, Throwable t) {
+ Throwable cause = t.getCause();
+
+ if(cause instanceof SecurityServiceException && cause.getCause() instanceof LoginException) {
+ responseMap.put(HTTPMetadataConstants.RESPONSE_CODE, HttpURLConnection.HTTP_UNAUTHORIZED);
+ responseMap.put(HTTPMetadataConstants.RESPONSE_CODE_MESSAGE, "Invalid Login Credentials.");
+ } else {
+ responseMap.put(HTTPMetadataConstants.RESPONSE_CODE, HttpURLConnection.HTTP_INTERNAL_ERROR);
+ responseMap.put(HTTPMetadataConstants.RESPONSE_CODE_MESSAGE, "Failed to service request.");
+ }
+ }
+
public void setMBeanServer(MBeanServer mBeanServer) {
}
More information about the jboss-svn-commits
mailing list