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 13:33:00 UTC
svn commit: r232796 - in /webservices/axis/trunk/java/modules:
core/src/org/apache/axis2/transport/http/
core/src/org/apache/axis2/transport/http/server/
integration/test-resources/soap/ integration/test/org/apache/axis2/swa/
Author: dims
Date: Mon Aug 15 04:32:54 2005
New Revision: 232796
URL: http://svn.apache.org/viewcvs?rev=232796&view=rev
Log:
HTTP 1.1 keep alive support.
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
webservices/axis/trunk/java/modules/integration/test-resources/soap/soapmessage.txt
webservices/axis/trunk/java/modules/integration/test/org/apache/axis2/swa/swainput.bin
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=232796&r1=232795&r2=232796&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 04:32:54 2005
@@ -117,6 +117,7 @@
if (!processed) {
response.setStatusLine(request.getRequestLine().getHttpVersion(), 200, "OK");
response.setBodyString(HTTPTransportReceiver.getServicesHTML(configurationContext));
+ setResponseHeaders(conn, request, response);
conn.writeResponse(response);
return true;
}
@@ -132,7 +133,8 @@
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) {
try {
@@ -143,6 +145,7 @@
response.setStatusLine(request.getRequestLine().getHttpVersion(), 500, "Internal server error");
engine.sendFault(faultContext);
response.setBody(new ByteArrayInputStream(baos.toByteArray()));
+ setResponseHeaders(conn, request, response);
conn.writeResponse(response);
} else {
log.error(e, e);
@@ -153,6 +156,33 @@
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 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=232796&r1=232795&r2=232796&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 04:32:54 2005
@@ -64,6 +64,7 @@
throw new IllegalArgumentException("Socket may not be null");
}
this.socket = socket;
+ this.socket.setTcpNoDelay(true);
this.in = socket.getInputStream();
this.out = socket.getOutputStream();
}
Modified: webservices/axis/trunk/java/modules/integration/test-resources/soap/soapmessage.txt
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/integration/test-resources/soap/soapmessage.txt?rev=232796&r1=232795&r2=232796&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/integration/test-resources/soap/soapmessage.txt (original)
+++ webservices/axis/trunk/java/modules/integration/test-resources/soap/soapmessage.txt Mon Aug 15 04:32:54 2005
@@ -1,6 +1,7 @@
POST /axis/services/EchoService HTTP/1.1
Host: 127.0.0.1
Content-Type: application/soap+xml; charset="utf-8"
+Connection: close
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
<soapenv:Header>
Modified: webservices/axis/trunk/java/modules/integration/test/org/apache/axis2/swa/swainput.bin
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/integration/test/org/apache/axis2/swa/swainput.bin?rev=232796&r1=232795&r2=232796&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/integration/test/org/apache/axis2/swa/swainput.bin (original)
+++ webservices/axis/trunk/java/modules/integration/test/org/apache/axis2/swa/swainput.bin Mon Aug 15 04:32:54 2005
@@ -5,6 +5,7 @@
Host: 127.0.0.1:8081
Cache-Control: no-cache
Pragma: no-cache
+Connection: close
SOAPAction: ""