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 2005/08/15 14:56:25 UTC
svn commit: r232806 - in
/webservices/axis/trunk/java/modules/core/src/org/apache/axis2/transport/http:
HTTPWorker.java server/SimpleHttpServerConnection.java
Author: dims
Date: Mon Aug 15 05:56:23 2005
New Revision: 232806
URL: http://svn.apache.org/viewcvs?rev=232806&view=rev
Log:
Check if reading the whole input stream helps...set SO_TIMEOUT as well.
Modified:
webservices/axis/trunk/java/modules/core/src/org/apache/axis2/transport/http/HTTPWorker.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis2/transport/http/server/SimpleHttpServerConnection.java
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis2/transport/http/HTTPWorker.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis2/transport/http/HTTPWorker.java?rev=232806&r1=232805&r2=232806&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis2/transport/http/HTTPWorker.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis2/transport/http/HTTPWorker.java Mon Aug 15 05:56:23 2005
@@ -117,11 +117,19 @@
if (!processed) {
response.setStatusLine(request.getRequestLine().getHttpVersion(), 200, "OK");
response.setBodyString(HTTPTransportReceiver.getServicesHTML(configurationContext));
- setResponseHeaders(conn, request, response);
+ setResponseHeaders(conn, request, response);
conn.writeResponse(response);
return true;
}
} else {
+ ByteArrayOutputStream baosIn = new ByteArrayOutputStream();
+ byte[] bytes = new byte[8192];
+ int size = 0;
+ while ((size = inStream.read(bytes)) != -1) {
+ baosIn.write(bytes, 0, size);
+ }
+ inStream = new ByteArrayInputStream(baosIn.toByteArray());
+
//It is POST, handle it
HTTPTransportUtils.processHTTPPostRequest(
msgContext,
@@ -133,7 +141,7 @@
configurationContext);
}
response.setStatusLine(request.getRequestLine().getHttpVersion(), 200, "OK");
- response.setBody(new ByteArrayInputStream(baos.toByteArray()));
+ response.setBody(new ByteArrayInputStream(baos.toByteArray()));
setResponseHeaders(conn, request, response);
conn.writeResponse(response);
} catch (Throwable e) {
@@ -145,7 +153,7 @@
response.setStatusLine(request.getRequestLine().getHttpVersion(), 500, "Internal server error");
engine.sendFault(faultContext);
response.setBody(new ByteArrayInputStream(baos.toByteArray()));
- setResponseHeaders(conn, request, response);
+ setResponseHeaders(conn, request, response);
conn.writeResponse(response);
} else {
log.error(e, e);
@@ -156,33 +164,32 @@
log.error(e.getMessage(), e);
}
return true;
- }
-
- private void setResponseHeaders(final SimpleHttpServerConnection conn, SimpleRequest request, SimpleResponse response) {
- if (!response.containsHeader("Connection")) {
- // See if the the client explicitly handles connection persistence
- Header connheader = request.getFirstHeader("Connection");
- if (connheader != null) {
- if (connheader.getValue().equalsIgnoreCase("keep-alive")) {
- Header header = new Header("Connection", "keep-alive");
- response.addHeader(header);
- conn.setKeepAlive(true);
- }
- if (connheader.getValue().equalsIgnoreCase("close")) {
- Header header = new Header("Connection", "close");
- response.addHeader(header);
- conn.setKeepAlive(false);
- }
- } else {
- // Use protocol default connection policy
- if (response.getHttpVersion().greaterEquals(HttpVersion.HTTP_1_1)) {
- conn.setKeepAlive(true);
- } else {
- conn.setKeepAlive(false);
- }
- }
- }
- System.out.println("HTTPWorker.isKeepAlive : " + conn.isKeepAlive());
+ }
+
+ private void setResponseHeaders(final SimpleHttpServerConnection conn, SimpleRequest request, SimpleResponse response) {
+ if (!response.containsHeader("Connection")) {
+ // See if the the client explicitly handles connection persistence
+ Header connheader = request.getFirstHeader("Connection");
+ if (connheader != null) {
+ if (connheader.getValue().equalsIgnoreCase("keep-alive")) {
+ Header header = new Header("Connection", "keep-alive");
+ response.addHeader(header);
+ conn.setKeepAlive(true);
+ }
+ if (connheader.getValue().equalsIgnoreCase("close")) {
+ Header header = new Header("Connection", "close");
+ response.addHeader(header);
+ conn.setKeepAlive(false);
+ }
+ } else {
+ // Use protocol default connection policy
+ if (response.getHttpVersion().greaterEquals(HttpVersion.HTTP_1_1)) {
+ conn.setKeepAlive(true);
+ } else {
+ conn.setKeepAlive(false);
+ }
+ }
+ }
}
private Map getHeaders(SimpleRequest request) {
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis2/transport/http/server/SimpleHttpServerConnection.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis2/transport/http/server/SimpleHttpServerConnection.java?rev=232806&r1=232805&r2=232806&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis2/transport/http/server/SimpleHttpServerConnection.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis2/transport/http/server/SimpleHttpServerConnection.java Mon Aug 15 05:56:23 2005
@@ -65,6 +65,7 @@
}
this.socket = socket;
this.socket.setTcpNoDelay(true);
+ this.socket.setSoTimeout(500);
this.in = socket.getInputStream();
this.out = socket.getOutputStream();
}