You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2007/11/08 16:49:39 UTC
svn commit: r593211 - in /jakarta/httpcomponents/httpcore/trunk:
module-main/src/examples/org/apache/http/examples/
module-nio/src/examples/org/apache/http/examples/nio/
Author: olegk
Date: Thu Nov 8 07:49:38 2007
New Revision: 593211
URL: http://svn.apache.org/viewvc?rev=593211&view=rev
Log:
Added example of a simple HTTP file server (still needs to be enhanced with direct channel I/O)
Added:
jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpFileServer.java (with props)
Modified:
jakarta/httpcomponents/httpcore/trunk/module-main/src/examples/org/apache/http/examples/ElementalHttpGet.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/examples/org/apache/http/examples/ElementalHttpPost.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/examples/org/apache/http/examples/ElementalHttpServer.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpClient.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpReverseProxy.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpServer.java
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/examples/org/apache/http/examples/ElementalHttpGet.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/examples/org/apache/http/examples/ElementalHttpGet.java?rev=593211&r1=593210&r2=593211&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/examples/org/apache/http/examples/ElementalHttpGet.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/examples/org/apache/http/examples/ElementalHttpGet.java Thu Nov 8 07:49:38 2007
@@ -71,7 +71,7 @@
HttpParams params = new BasicHttpParams(null);
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, "UTF-8");
- HttpProtocolParams.setUserAgent(params, "Jakarta-HttpComponents/1.1");
+ HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1");
HttpProtocolParams.setUseExpectContinue(params, true);
BasicHttpProcessor httpproc = new BasicHttpProcessor();
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/examples/org/apache/http/examples/ElementalHttpPost.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/examples/org/apache/http/examples/ElementalHttpPost.java?rev=593211&r1=593210&r2=593211&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/examples/org/apache/http/examples/ElementalHttpPost.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/examples/org/apache/http/examples/ElementalHttpPost.java Thu Nov 8 07:49:38 2007
@@ -76,7 +76,7 @@
HttpParams params = new BasicHttpParams(null);
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, "UTF-8");
- HttpProtocolParams.setUserAgent(params, "Jakarta-HttpComponents/1.1");
+ HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1");
HttpProtocolParams.setUseExpectContinue(params, true);
BasicHttpProcessor httpproc = new BasicHttpProcessor();
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/examples/org/apache/http/examples/ElementalHttpServer.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/examples/org/apache/http/examples/ElementalHttpServer.java?rev=593211&r1=593210&r2=593211&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/examples/org/apache/http/examples/ElementalHttpServer.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/examples/org/apache/http/examples/ElementalHttpServer.java Thu Nov 8 07:49:38 2007
@@ -181,7 +181,7 @@
.setIntParameter(CoreConnectionPNames.SOCKET_BUFFER_SIZE, 8 * 1024)
.setBooleanParameter(CoreConnectionPNames.STALE_CONNECTION_CHECK, false)
.setBooleanParameter(CoreConnectionPNames.TCP_NODELAY, true)
- .setParameter(CoreProtocolPNames.ORIGIN_SERVER, "Jakarta-HttpComponents/1.1");
+ .setParameter(CoreProtocolPNames.ORIGIN_SERVER, "HttpComponents/1.1");
this.docRoot = docroot;
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpClient.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpClient.java?rev=593211&r1=593210&r2=593211&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpClient.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpClient.java Thu Nov 8 07:49:38 2007
@@ -74,7 +74,7 @@
.setIntParameter(CoreConnectionPNames.SOCKET_BUFFER_SIZE, 8 * 1024)
.setBooleanParameter(CoreConnectionPNames.STALE_CONNECTION_CHECK, false)
.setBooleanParameter(CoreConnectionPNames.TCP_NODELAY, true)
- .setParameter(CoreProtocolPNames.USER_AGENT, "Jakarta-HttpComponents-NIO/1.1");
+ .setParameter(CoreProtocolPNames.USER_AGENT, "HttpComponents/1.1");
final ConnectingIOReactor ioReactor = new DefaultConnectingIOReactor(2, params);
Added: jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpFileServer.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpFileServer.java?rev=593211&view=auto
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpFileServer.java (added)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpFileServer.java Thu Nov 8 07:49:38 2007
@@ -0,0 +1,424 @@
+/*
+ * $HeadURL:$
+ * $Revision:$
+ * $Date:$
+ *
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+package org.apache.http.examples.nio;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InterruptedIOException;
+import java.io.UnsupportedEncodingException;
+import java.net.InetSocketAddress;
+import java.net.URLDecoder;
+import java.nio.ByteBuffer;
+import java.nio.channels.Channels;
+import java.nio.channels.ReadableByteChannel;
+
+import org.apache.http.ConnectionReuseStrategy;
+import org.apache.http.HttpConnection;
+import org.apache.http.HttpEntityEnclosingRequest;
+import org.apache.http.HttpException;
+import org.apache.http.HttpRequest;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpResponseFactory;
+import org.apache.http.HttpStatus;
+import org.apache.http.HttpVersion;
+import org.apache.http.ProtocolVersion;
+import org.apache.http.entity.ByteArrayEntity;
+import org.apache.http.entity.FileEntity;
+import org.apache.http.impl.DefaultConnectionReuseStrategy;
+import org.apache.http.impl.DefaultHttpResponseFactory;
+import org.apache.http.impl.nio.DefaultServerIOEventDispatch;
+import org.apache.http.impl.nio.reactor.DefaultListeningIOReactor;
+import org.apache.http.nio.ContentDecoder;
+import org.apache.http.nio.ContentEncoder;
+import org.apache.http.nio.NHttpServerConnection;
+import org.apache.http.nio.NHttpServiceHandler;
+import org.apache.http.nio.entity.ContentBufferEntity;
+import org.apache.http.nio.reactor.IOEventDispatch;
+import org.apache.http.nio.reactor.ListeningIOReactor;
+import org.apache.http.nio.util.ContentInputBuffer;
+import org.apache.http.nio.util.HeapByteBufferAllocator;
+import org.apache.http.nio.util.SimpleInputBuffer;
+import org.apache.http.params.BasicHttpParams;
+import org.apache.http.params.HttpConnectionParams;
+import org.apache.http.params.HttpParams;
+import org.apache.http.params.HttpParamsLinker;
+import org.apache.http.params.HttpProtocolParams;
+import org.apache.http.protocol.BasicHttpProcessor;
+import org.apache.http.protocol.ExecutionContext;
+import org.apache.http.protocol.HttpContext;
+import org.apache.http.protocol.HttpProcessor;
+import org.apache.http.protocol.ResponseConnControl;
+import org.apache.http.protocol.ResponseContent;
+import org.apache.http.protocol.ResponseDate;
+import org.apache.http.protocol.ResponseServer;
+import org.apache.http.util.EncodingUtils;
+
+public class NHttpFileServer {
+
+ public static void main(String[] args) throws Exception {
+ if (args.length < 1) {
+ System.err.println("Please specify document root directory");
+ System.exit(1);
+ }
+ HttpParams params = new BasicHttpParams();
+ params
+ .setIntParameter(HttpConnectionParams.SO_TIMEOUT, 20000)
+ .setIntParameter(HttpConnectionParams.SOCKET_BUFFER_SIZE, 8 * 1024)
+ .setBooleanParameter(HttpConnectionParams.STALE_CONNECTION_CHECK, false)
+ .setBooleanParameter(HttpConnectionParams.TCP_NODELAY, true)
+ .setParameter(HttpProtocolParams.ORIGIN_SERVER, "HttpComponents/1.1");
+
+ ListeningIOReactor ioReactor = new DefaultListeningIOReactor(2, params);
+
+ NHttpServiceHandler handler = new FileServiceHandler(args[0], params);
+ IOEventDispatch ioEventDispatch = new DefaultServerIOEventDispatch(handler, params);
+
+ try {
+ ioReactor.listen(new InetSocketAddress(8080));
+ ioReactor.execute(ioEventDispatch);
+ } catch (InterruptedIOException ex) {
+ System.err.println("Interrupted");
+ } catch (IOException e) {
+ System.err.println("I/O error: " + e.getMessage());
+ }
+ System.out.println("Shutdown");
+ }
+
+ private static final String CONN_STATE = "http.conn-state";
+ private static final String OUT_CHANNEL = "http.out-channel";
+
+ static class ConnState {
+
+ private final SimpleInputBuffer inbuf;
+ private final ByteBuffer outbuf;
+
+ public ConnState() {
+ super();
+ this.inbuf = new SimpleInputBuffer(2048, new HeapByteBufferAllocator());
+ this.outbuf = ByteBuffer.allocateDirect(2048);
+ }
+
+ public ContentInputBuffer getInbuf() {
+ return this.inbuf;
+ }
+
+ public ByteBuffer getOutbuf() {
+ return this.outbuf;
+ }
+
+ public void reset() {
+ this.inbuf.reset();
+ this.outbuf.clear();
+ }
+
+ }
+
+ public static class FileServiceHandler implements NHttpServiceHandler {
+
+ private final String docRoot;
+ private final HttpParams params;
+ private final HttpResponseFactory responseFactory;
+ private final HttpProcessor httpProcessor;
+ private final ConnectionReuseStrategy connStrategy;
+
+ public FileServiceHandler(final String docRoot, final HttpParams params) {
+ super();
+ this.docRoot = docRoot;
+ this.params = params;
+ this.responseFactory = new DefaultHttpResponseFactory();
+ this.httpProcessor = createProtocolProcessor();
+ this.connStrategy = new DefaultConnectionReuseStrategy();
+ }
+
+ private HttpProcessor createProtocolProcessor() {
+ BasicHttpProcessor httpProcessor = new BasicHttpProcessor();
+ httpProcessor.addInterceptor(new ResponseDate());
+ httpProcessor.addInterceptor(new ResponseServer());
+ httpProcessor.addInterceptor(new ResponseContent());
+ httpProcessor.addInterceptor(new ResponseConnControl());
+ return httpProcessor;
+ }
+
+ public void connected(final NHttpServerConnection conn) {
+ System.out.println("New incoming connection");
+
+ HttpContext context = conn.getContext();
+ ConnState connState = new ConnState();
+
+ context.setAttribute(CONN_STATE, connState);
+ }
+
+ public void closed(final NHttpServerConnection conn) {
+ System.out.println("Connection closed");
+ HttpContext context = conn.getContext();
+ context.setAttribute(CONN_STATE, null);
+ }
+
+ public void timeout(final NHttpServerConnection conn) {
+ System.err.println("Timeout");
+ shutdownConnection(conn);
+ }
+
+ public void exception(final NHttpServerConnection conn, final IOException ex) {
+ System.err.println("I/O error: " + ex.getMessage());
+ shutdownConnection(conn);
+ }
+
+ public void exception(final NHttpServerConnection conn, final HttpException ex) {
+ HttpContext context = conn.getContext();
+ HttpResponse response = this.responseFactory.newHttpResponse(
+ HttpVersion.HTTP_1_0, HttpStatus.SC_BAD_REQUEST, context);
+ HttpParamsLinker.link(response, this.params);
+
+ context.setAttribute(ExecutionContext.HTTP_RESPONSE, response);
+ context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
+
+ try {
+ handleException(ex, response, context);
+ this.httpProcessor.process(response, context);
+ commitResponse(conn, response);
+ } catch (HttpException ex2) {
+ shutdownConnection(conn);
+ System.err.println("Unexpected HTTP protocol error: " + ex2.getMessage());
+ } catch (IOException ex2) {
+ shutdownConnection(conn);
+ System.err.println("I/O error: " + ex2.getMessage());
+ }
+ }
+
+ private void shutdownConnection(final HttpConnection conn) {
+ try {
+ conn.shutdown();
+ } catch (IOException ignore) {
+ }
+ }
+
+ public void requestReceived(final NHttpServerConnection conn) {
+ HttpContext context = conn.getContext();
+
+ ConnState connState = (ConnState) context.getAttribute(CONN_STATE);
+ connState.reset();
+
+ HttpRequest request = conn.getHttpRequest();
+ ProtocolVersion ver = request.getRequestLine().getProtocolVersion();
+
+ try {
+ if (request instanceof HttpEntityEnclosingRequest) {
+
+ HttpEntityEnclosingRequest eeRequest = (HttpEntityEnclosingRequest) request;
+ if (eeRequest.expectContinue()) {
+ HttpResponse ack = this.responseFactory.newHttpResponse(
+ ver, 100, context);
+ conn.submitResponse(ack);
+ }
+ // Wait until the request content is fully received
+ } else {
+ // No request content is expected.
+ // Proceed with service right away
+ doService(conn, connState);
+ }
+ } catch (HttpException ex) {
+ shutdownConnection(conn);
+ System.err.println("Unexpected HTTP protocol error: " + ex.getMessage());
+ } catch (IOException ex) {
+ shutdownConnection(conn);
+ System.err.println("I/O error: " + ex.getMessage());
+ }
+ }
+
+ public void responseReady(final NHttpServerConnection conn) {
+ }
+
+ public void inputReady(final NHttpServerConnection conn, final ContentDecoder decoder) {
+ HttpContext context = conn.getContext();
+
+ ConnState connState = (ConnState) context.getAttribute(
+ CONN_STATE);
+
+ ContentInputBuffer inbuf = connState.getInbuf();
+ try {
+ inbuf.consumeContent(decoder);
+ if (decoder.isCompleted()) {
+ // Request entity has been fully received
+ doService(conn, connState);
+ }
+
+ } catch (HttpException ex) {
+ shutdownConnection(conn);
+ System.err.println("Unexpected HTTP protocol error: " + ex.getMessage());
+ } catch (IOException ex) {
+ shutdownConnection(conn);
+ System.err.println("I/O error: " + ex.getMessage());
+ }
+ }
+
+ public void outputReady(final NHttpServerConnection conn, final ContentEncoder encoder) {
+ HttpContext context = conn.getContext();
+
+ ConnState connState = (ConnState) context.getAttribute(
+ CONN_STATE);
+ ReadableByteChannel channel = (ReadableByteChannel) context.getAttribute(
+ OUT_CHANNEL);
+
+ HttpResponse response = conn.getHttpResponse();
+ ByteBuffer outbuf = connState.getOutbuf();
+ try {
+ int bytesRead = channel.read(outbuf);
+ if (bytesRead == -1) {
+ encoder.complete();
+ } else {
+ outbuf.flip();
+ encoder.write(outbuf);
+ outbuf.compact();
+ }
+
+ if (encoder.isCompleted()) {
+ channel.close();
+ if (!this.connStrategy.keepAlive(response, context)) {
+ conn.close();
+ }
+ }
+
+ } catch (IOException ex) {
+ shutdownConnection(conn);
+ System.err.println("I/O error: " + ex.getMessage());
+ }
+
+ }
+
+ private void commitResponse(
+ final NHttpServerConnection conn,
+ final HttpResponse response) throws HttpException, IOException {
+ ReadableByteChannel channel = null;
+ if (response.getEntity() != null) {
+ InputStream instream = response.getEntity().getContent();
+ if (instream instanceof FileInputStream) {
+ channel = ((FileInputStream)instream).getChannel();
+ } else {
+ channel = Channels.newChannel(instream);
+ }
+
+ }
+ conn.getContext().setAttribute(OUT_CHANNEL, channel);
+ conn.submitResponse(response);
+ }
+
+ private void doService(
+ final NHttpServerConnection conn,
+ final ConnState connState) throws HttpException, IOException {
+ HttpContext context = conn.getContext();
+ HttpRequest request = conn.getHttpRequest();
+ HttpParamsLinker.link(request, this.params);
+
+ if (request instanceof HttpEntityEnclosingRequest) {
+ HttpEntityEnclosingRequest eeRequest = (HttpEntityEnclosingRequest) request;
+ // Create a wrapper entity instead of the original one
+ if (eeRequest.getEntity() != null) {
+ eeRequest.setEntity(new ContentBufferEntity(
+ eeRequest.getEntity(),
+ connState.getInbuf()));
+ }
+ }
+
+ ProtocolVersion ver = request.getRequestLine().getProtocolVersion();
+ HttpResponse response = this.responseFactory.newHttpResponse(ver, 200, context);
+ HttpParamsLinker.link(response, this.params);
+
+ context.setAttribute(ExecutionContext.HTTP_REQUEST, request);
+ context.setAttribute(ExecutionContext.HTTP_RESPONSE, response);
+ context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
+
+ try {
+ this.httpProcessor.process(request, context);
+ handleRequest(request, response, context);
+ } catch (HttpException ex) {
+ handleException(ex, response, context);
+ }
+ this.httpProcessor.process(response, context);
+ commitResponse(conn, response);
+ }
+
+ private void handleRequest(
+ final HttpRequest request,
+ final HttpResponse response,
+ final HttpContext context) {
+
+ String target = request.getRequestLine().getUri();
+ File file;
+ try {
+ file = new File(this.docRoot, URLDecoder.decode(target, "UTF-8"));
+ } catch (UnsupportedEncodingException ex) {
+ throw new Error("UTF-8 not supported");
+ }
+
+ if (!file.exists()) {
+
+ response.setStatusCode(HttpStatus.SC_NOT_FOUND);
+ byte[] msg = EncodingUtils.getAsciiBytes(
+ file.getName() + ": not found");
+ ByteArrayEntity entity = new ByteArrayEntity(msg);
+ entity.setContentType("text/plain; charset=US-ASCII");
+ response.setEntity(entity);
+
+ } else if (!file.canRead() || file.isDirectory()) {
+
+ response.setStatusCode(HttpStatus.SC_FORBIDDEN);
+ byte[] msg = EncodingUtils.getAsciiBytes(
+ file.getName() + ": access denied");
+ ByteArrayEntity entity = new ByteArrayEntity(msg);
+ entity.setContentType("text/plain; charset=US-ASCII");
+ response.setEntity(entity);
+
+ } else {
+
+ FileEntity entity = new FileEntity(file, "text/html");
+ response.setEntity(entity);
+
+ }
+ }
+
+ private void handleException(
+ final HttpException ex,
+ final HttpResponse response,
+ final HttpContext context) {
+ response.setStatusLine(HttpVersion.HTTP_1_0, HttpStatus.SC_BAD_REQUEST);
+ byte[] msg = EncodingUtils.getAsciiBytes(
+ "Malformed HTTP request: " + ex.getMessage());
+ ByteArrayEntity entity = new ByteArrayEntity(msg);
+ entity.setContentType("text/plain; charset=US-ASCII");
+ response.setEntity(entity);
+ }
+
+ }
+
+}
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpFileServer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpFileServer.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpFileServer.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpReverseProxy.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpReverseProxy.java?rev=593211&r1=593210&r2=593211&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpReverseProxy.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpReverseProxy.java Thu Nov 8 07:49:38 2007
@@ -106,8 +106,8 @@
.setIntParameter(CoreConnectionPNames.SOCKET_BUFFER_SIZE, 8 * 1024)
.setBooleanParameter(CoreConnectionPNames.STALE_CONNECTION_CHECK, false)
.setBooleanParameter(CoreConnectionPNames.TCP_NODELAY, true)
- .setParameter(CoreProtocolPNames.ORIGIN_SERVER, "Jakarta-HttpComponents-NIO/1.1")
- .setParameter(CoreProtocolPNames.USER_AGENT, "Jakarta-HttpComponents-NIO/1.1");
+ .setParameter(CoreProtocolPNames.ORIGIN_SERVER, "HttpComponents/1.1")
+ .setParameter(CoreProtocolPNames.USER_AGENT, "HttpComponents/1.1");
final ConnectingIOReactor connectingIOReactor = new DefaultConnectingIOReactor(
1, params);
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpServer.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpServer.java?rev=593211&r1=593210&r2=593211&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpServer.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/examples/org/apache/http/examples/nio/NHttpServer.java Thu Nov 8 07:49:38 2007
@@ -84,7 +84,7 @@
.setIntParameter(CoreConnectionPNames.SOCKET_BUFFER_SIZE, 8 * 1024)
.setBooleanParameter(CoreConnectionPNames.STALE_CONNECTION_CHECK, false)
.setBooleanParameter(CoreConnectionPNames.TCP_NODELAY, true)
- .setParameter(CoreProtocolPNames.ORIGIN_SERVER, "Jakarta-HttpComponents-NIO/1.1");
+ .setParameter(CoreProtocolPNames.ORIGIN_SERVER, "HttpComponents/1.1");
BasicHttpProcessor httpproc = new BasicHttpProcessor();
httpproc.addInterceptor(new ResponseDate());