You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2008/03/18 19:43:02 UTC
svn commit: r638500 -
/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java
Author: dims
Date: Tue Mar 18 11:42:52 2008
New Revision: 638500
URL: http://svn.apache.org/viewvc?rev=638500&view=rev
Log:
Fix for AXIS2-3532 - NPE in HttpCoreNIOSender
Modified:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java?rev=638500&r1=638499&r2=638500&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java Tue Mar 18 11:42:52 2008
@@ -408,18 +408,23 @@
}
public void failed(SessionRequest request) {
- handleError(request);
+ handleError(request, false);
}
public void timeout(SessionRequest request) {
- handleError(request);
+ // In a timeout occurs the exception field is not updated
+ // This means that it will be null (see SessionRequestImpl.timeout())
+ handleError(request, true);
+ request.cancel();
}
+
+
public void cancelled(SessionRequest sessionRequest) {
}
- private void handleError(SessionRequest request) {
+ private final void handleError(SessionRequest request, boolean isTimeout) {
if (request.getAttachment() != null &&
request.getAttachment() instanceof Axis2HttpRequest) {
@@ -431,15 +436,24 @@
// this fault is NOT caused by the endpoint while processing. so we have to
// inform that this is a sending error (e.g. endpoint failure) and handle it
// differently at the message receiver.
-
- Exception exception = request.getException();
- MessageContext nioFaultMessageContext =
- MessageContextBuilder.createFaultMessageContext(
- /** this is not a mistake I do NOT want getMessage()*/
- mc, new AxisFault(exception.toString(), exception));
- nioFaultMessageContext.setProperty(NhttpConstants.SENDING_FAULT, Boolean.TRUE);
- mr.receive(nioFaultMessageContext);
-
+ AxisFault axisFault;
+ if (isTimeout) {
+ // In case of a timeout there is no exception
+ axisFault = new AxisFault("The connection timed out");
+ } else {
+ Exception exception = request.getException();
+ axisFault = new AxisFault(exception.toString(), exception);
+ }
+
+ if (mr == null) {
+ // FIXME: the message receiver is null if the MEP is out-only
+ log.error(axisFault.getMessage());
+ } else {
+ MessageContext nioFaultMessageContext =
+ MessageContextBuilder.createFaultMessageContext(mc, axisFault);
+ nioFaultMessageContext.setProperty(NhttpConstants.SENDING_FAULT, Boolean.TRUE);
+ mr.receive(nioFaultMessageContext);
+ }
} catch (AxisFault af) {
log.error("Unable to report back failure to the message receiver", af);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org