You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2008/08/01 04:50:13 UTC
svn commit: r681593 -
/geronimo/server/trunk/plugins/axis2/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/Axis2WebServiceContainer.java
Author: gawor
Date: Thu Jul 31 19:50:13 2008
New Revision: 681593
URL: http://svn.apache.org/viewvc?rev=681593&view=rev
Log:
no need to log every exception as an error
Modified:
geronimo/server/trunk/plugins/axis2/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/Axis2WebServiceContainer.java
Modified: geronimo/server/trunk/plugins/axis2/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/Axis2WebServiceContainer.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/axis2/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/Axis2WebServiceContainer.java?rev=681593&r1=681592&r2=681593&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/axis2/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/Axis2WebServiceContainer.java (original)
+++ geronimo/server/trunk/plugins/axis2/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/Axis2WebServiceContainer.java Thu Jul 31 19:50:13 2008
@@ -32,6 +32,7 @@
import javax.xml.ws.handler.Handler;
import org.apache.axiom.om.util.UUIDGenerator;
+import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.AddressingHelper;
import org.apache.axis2.addressing.EndpointReference;
@@ -202,39 +203,43 @@
msgContext.setAxisService(this.service);
doService2(request, response, msgContext);
- } catch (Throwable e) {
+ } catch (AxisFault e) {
+ LOG.debug(e.getMessage(), e);
+ handleFault(msgContext, response, e);
+ } catch (Throwable e) {
String msg = "Exception occurred while trying to invoke service method doService()";
LOG.error(msg, e);
- try {
- AxisEngine engine = new AxisEngine(this.configurationContext);
+ handleFault(msgContext, response, new AxisFault(msg, e));
+ }
- msgContext.setProperty(MessageContext.TRANSPORT_OUT, response.getOutputStream());
- msgContext.setProperty(Constants.OUT_TRANSPORT_INFO, new Axis2TransportInfo(response));
+ }
- MessageContext faultContext = MessageContextBuilder.createFaultMessageContext(msgContext, e);
- // If the fault is not going along the back channel we should be 202ing
- if (AddressingHelper.isFaultRedirected(msgContext)) {
- response.setStatusCode(HttpURLConnection.HTTP_ACCEPTED);
- } else {
- response.setStatusCode(HttpURLConnection.HTTP_INTERNAL_ERROR);
- }
- engine.sendFault(faultContext);
- } catch (Exception ex) {
- if (AddressingHelper.isFaultRedirected(msgContext)) {
- response.setStatusCode(HttpURLConnection.HTTP_ACCEPTED);
- } else {
- response.setStatusCode(HttpURLConnection.HTTP_INTERNAL_ERROR);
- response.setHeader(HTTPConstants.HEADER_CONTENT_TYPE, "text/plain");
- PrintWriter pw = new PrintWriter(response.getOutputStream());
- ex.printStackTrace(pw);
- pw.flush();
- LOG.error(msg, ex);
- }
- }
+ private void handleFault(MessageContext msgContext, Response response, AxisFault e) {
+ // If the fault is not going along the back channel we should be 202ing
+ if (AddressingHelper.isFaultRedirected(msgContext)) {
+ response.setStatusCode(HttpURLConnection.HTTP_ACCEPTED);
+ } else {
+ response.setStatusCode(HttpURLConnection.HTTP_INTERNAL_ERROR);
}
+
+ msgContext.setProperty(MessageContext.TRANSPORT_OUT, response.getOutputStream());
+ msgContext.setProperty(Constants.OUT_TRANSPORT_INFO, new Axis2TransportInfo(response));
+ try {
+ MessageContext faultContext = MessageContextBuilder.createFaultMessageContext(msgContext, e);
+ AxisEngine.sendFault(faultContext);
+ } catch (Exception ex) {
+ LOG.warn("Error sending fault", ex);
+ if (!AddressingHelper.isFaultRedirected(msgContext)) {
+ response.setStatusCode(HttpURLConnection.HTTP_INTERNAL_ERROR);
+ response.setHeader(HTTPConstants.HEADER_CONTENT_TYPE, "text/plain");
+ PrintWriter pw = new PrintWriter(response.getOutputStream());
+ ex.printStackTrace(pw);
+ pw.flush();
+ }
+ }
}
-
+
protected String getServicePath(String contextRoot) {
String location = this.portInfo.getLocation();
if (location != null && location.startsWith(contextRoot)) {