You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by jv...@apache.org on 2013/01/28 20:46:56 UTC
[4/5] git commit: make example HTTP server works
make example HTTP server works
Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/6aa15441
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/6aa15441
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/6aa15441
Branch: refs/heads/trunk
Commit: 6aa154411c09497e4856999435d99dbbd2450f22
Parents: 469cb85
Author: jvermillard <jv...@apache.org>
Authored: Mon Jan 28 20:28:48 2013 +0100
Committer: jvermillard <jv...@apache.org>
Committed: Mon Jan 28 20:28:48 2013 +0100
----------------------------------------------------------------------
.../org/apache/mina/examples/http/HttpTest.java | 18 ++++++++------
.../org/apache/mina/examples/http/HttpsTest.java | 19 ++++++++------
.../org/apache/mina/http/HttpServerDecoder.java | 3 ++
3 files changed, 24 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina/blob/6aa15441/examples/src/main/java/org/apache/mina/examples/http/HttpTest.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/mina/examples/http/HttpTest.java b/examples/src/main/java/org/apache/mina/examples/http/HttpTest.java
index df6c020..504fbfe 100644
--- a/examples/src/main/java/org/apache/mina/examples/http/HttpTest.java
+++ b/examples/src/main/java/org/apache/mina/examples/http/HttpTest.java
@@ -29,11 +29,13 @@ import java.util.Map;
import org.apache.mina.api.AbstractIoFilter;
import org.apache.mina.api.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
+import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.filterchain.ReadFilterChainController;
import org.apache.mina.http.DateUtil;
import org.apache.mina.http.HttpServerDecoder;
import org.apache.mina.http.HttpServerEncoder;
import org.apache.mina.http.api.DefaultHttpResponse;
+import org.apache.mina.http.api.HttpContentChunk;
import org.apache.mina.http.api.HttpEndOfContent;
import org.apache.mina.http.api.HttpMethod;
import org.apache.mina.http.api.HttpPdu;
@@ -46,18 +48,18 @@ public class HttpTest {
public static void main(String[] args) throws Exception {
- NioTcpServer acceptor = new NioTcpServer();
- acceptor.setFilters(/* new LoggingFilter("INCOMING"), */new ProtocolCodecFilter<HttpPdu, ByteBuffer>(
- HttpServerEncoder.class, HttpServerDecoder.class), /* new LoggingFilter("DECODED"), */
- new DummyHttpSever());
+ NioTcpServer httpServer = new NioTcpServer();
+ httpServer.setReuseAddress(true);
+ httpServer.setFilters(new LoggingFilter("INCOMING"), new ProtocolCodecFilter<HttpPdu, ByteBuffer>(
+ HttpServerEncoder.class, HttpServerDecoder.class), new LoggingFilter("DECODED"), new DummyHttpSever());
- acceptor.getSessionConfig().setTcpNoDelay(true);
+ httpServer.getSessionConfig().setTcpNoDelay(true);
- acceptor.bind(new InetSocketAddress(8080));
+ httpServer.bind(new InetSocketAddress(8080));
// run for 20 seconds
Thread.sleep(20000);
- acceptor.unbind();
+ httpServer.unbind();
}
@@ -99,7 +101,7 @@ public class HttpTest {
// compute content len
headers.put("Content-Length", String.valueOf(content.remaining()));
session.write(new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SUCCESS_OK, headers));
- session.write(content);
+ session.write(new HttpContentChunk(content));
session.write(new HttpEndOfContent());
session.close(false);
http://git-wip-us.apache.org/repos/asf/mina/blob/6aa15441/examples/src/main/java/org/apache/mina/examples/http/HttpsTest.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/mina/examples/http/HttpsTest.java b/examples/src/main/java/org/apache/mina/examples/http/HttpsTest.java
index b9ff268..8404367 100644
--- a/examples/src/main/java/org/apache/mina/examples/http/HttpsTest.java
+++ b/examples/src/main/java/org/apache/mina/examples/http/HttpsTest.java
@@ -28,13 +28,16 @@ import java.util.Map;
import org.apache.mina.api.AbstractIoFilter;
import org.apache.mina.api.IoSession;
+import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.filterchain.ReadFilterChainController;
import org.apache.mina.http.DateUtil;
-import org.apache.mina.http.HttpServerCodec;
+import org.apache.mina.http.HttpServerDecoder;
+import org.apache.mina.http.HttpServerEncoder;
import org.apache.mina.http.api.DefaultHttpResponse;
import org.apache.mina.http.api.HttpEndOfContent;
import org.apache.mina.http.api.HttpMethod;
+import org.apache.mina.http.api.HttpPdu;
import org.apache.mina.http.api.HttpRequest;
import org.apache.mina.http.api.HttpStatus;
import org.apache.mina.http.api.HttpVersion;
@@ -44,21 +47,21 @@ public class HttpsTest {
public static void main(String[] args) throws Exception {
- NioTcpServer acceptor = new NioTcpServer();
+ NioTcpServer httpServer = new NioTcpServer();
- acceptor.setFilters(new LoggingFilter("INCOMING"), new HttpServerCodec(), new LoggingFilter("DECODED"),
- new DummyHttpSever());
+ httpServer.setFilters(new LoggingFilter("INCOMING"), new ProtocolCodecFilter<HttpPdu, ByteBuffer>(
+ HttpServerEncoder.class, HttpServerDecoder.class), new LoggingFilter("DECODED"), new DummyHttpSever());
- acceptor.getSessionConfig().setTcpNoDelay(true);
+ httpServer.getSessionConfig().setTcpNoDelay(true);
// Make it use https, injecting a default SSLContext instance
- acceptor.getSessionConfig().setSslContext(BogusSslContextFactory.getInstance(true));
+ httpServer.getSessionConfig().setSslContext(BogusSslContextFactory.getInstance(true));
- acceptor.bind(new InetSocketAddress(8080));
+ httpServer.bind(new InetSocketAddress(8080));
// run for 20 seconds
Thread.sleep(20000);
- acceptor.unbind();
+ httpServer.unbind();
}
http://git-wip-us.apache.org/repos/asf/mina/blob/6aa15441/http/src/main/java/org/apache/mina/http/HttpServerDecoder.java
----------------------------------------------------------------------
diff --git a/http/src/main/java/org/apache/mina/http/HttpServerDecoder.java b/http/src/main/java/org/apache/mina/http/HttpServerDecoder.java
index 0c4cf0f..2d53e02 100644
--- a/http/src/main/java/org/apache/mina/http/HttpServerDecoder.java
+++ b/http/src/main/java/org/apache/mina/http/HttpServerDecoder.java
@@ -79,6 +79,9 @@ public class HttpServerDecoder implements ProtocolDecoder<ByteBuffer, HttpPdu> {
@Override
public HttpPdu[] decode(ByteBuffer msg) throws ProtocolDecoderException {
LOG.debug("decode : {}", msg);
+ if (msg.remaining() <= 0) {
+ return null;
+ }
switch (state) {
case HEAD:
LOG.debug("decoding HEAD");