diff --git a/pom.xml b/pom.xml index ff0eb32..89b958d 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ io.netty netty-all - 4.0.0.CR2 + 4.0.12.Final redis.clients diff --git a/src/main/java/org/n3r/shorturl/netty/NettyHttpServerHandlerAdapter.java b/src/main/java/org/n3r/shorturl/netty/NettyHttpServerHandlerAdapter.java index 33175e3..ed1e8f2 100644 --- a/src/main/java/org/n3r/shorturl/netty/NettyHttpServerHandlerAdapter.java +++ b/src/main/java/org/n3r/shorturl/netty/NettyHttpServerHandlerAdapter.java @@ -2,7 +2,7 @@ import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInboundMessageHandlerAdapter; +import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.handler.codec.http.DefaultHttpResponse; import io.netty.handler.codec.http.HttpContent; import io.netty.handler.codec.http.HttpHeaders; @@ -18,7 +18,7 @@ import java.util.Map; import java.util.Map.Entry; -public class NettyHttpServerHandlerAdapter extends ChannelInboundMessageHandlerAdapter { +public class NettyHttpServerHandlerAdapter extends ChannelInboundHandlerAdapter { private HttpRequest request; @@ -34,7 +34,8 @@ public NettyHttpServerHandlerAdapter(NettyHttpServerHandler handler) { } @Override - public void endMessageReceived(ChannelHandlerContext ctx) throws Exception { + public void channelReadComplete(ChannelHandlerContext ctx) throws Exception { + super.channelReadComplete(ctx); ctx.flush(); } @@ -45,7 +46,7 @@ public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws E } @Override - public void messageReceived(ChannelHandlerContext ctx, Object msg) throws Exception { + public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (msg instanceof HttpRequest) { request = (HttpRequest) msg; @@ -87,7 +88,7 @@ public void messageReceived(ChannelHandlerContext ctx, Object msg) throws Except private static void send100Continue(ChannelHandlerContext ctx, HttpRequest request) { HttpResponse response = new DefaultHttpResponse(request.getProtocolVersion(), HttpResponseStatus.CONTINUE); - ctx.nextOutboundMessageBuffer().add(response); + ctx.write(response); } } diff --git a/src/main/java/org/n3r/shorturl/netty/ShortUrlNettyHandler.java b/src/main/java/org/n3r/shorturl/netty/ShortUrlNettyHandler.java index 433bdb5..639a584 100644 --- a/src/main/java/org/n3r/shorturl/netty/ShortUrlNettyHandler.java +++ b/src/main/java/org/n3r/shorturl/netty/ShortUrlNettyHandler.java @@ -1,7 +1,6 @@ package org.n3r.shorturl.netty; import io.netty.buffer.Unpooled; -import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.http.DefaultFullHttpResponse; import io.netty.handler.codec.http.FullHttpResponse; @@ -18,9 +17,8 @@ public class ShortUrlNettyHandler implements NettyHttpServerHandler { public static final RedisClient redis = new RedisClient("132.35.81.197:6379"); - @Override public void handle(ChannelHandlerContext ctx, HttpRequest request, String urlPattern, Map parameters) { - String rspCnt = "/favicon.ico".equalsIgnoreCase(urlPattern) ? "" : "/generate".equalsIgnoreCase(urlPattern) ? + String rspCnt = "/favicon.ico".equalsIgnoreCase(urlPattern) ? "" : "/generate".equalsIgnoreCase(urlPattern) ? generate(ctx, request, parameters) : query(ctx, request, parameters); FullHttpResponse response = createResponse(request, rspCnt); @@ -31,10 +29,10 @@ public void handle(ChannelHandlerContext ctx, HttpRequest request, String urlPat response.headers().set(HttpHeaders.Names.CONNECTION, HttpHeaders.Values.KEEP_ALIVE); } - ctx.nextOutboundMessageBuffer().add(response); + ctx.write(response); if (!keepAlive) { - ctx.flush().addListener(ChannelFutureListener.CLOSE); + ctx.flush().close(); } } diff --git a/src/main/java/org/n3r/shorturl/redis/RedisClient.java b/src/main/java/org/n3r/shorturl/redis/RedisClient.java index a91084b..fdbad1d 100644 --- a/src/main/java/org/n3r/shorturl/redis/RedisClient.java +++ b/src/main/java/org/n3r/shorturl/redis/RedisClient.java @@ -1,91 +1,90 @@ -package org.n3r.shorturl.redis; - -import java.io.Closeable; -import java.io.IOException; -import java.util.Set; - -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisPool; -import redis.clients.jedis.JedisPoolConfig; - -public class RedisClient implements Closeable { - - public JedisPool pool; - - /** - * 生成多线程共享的使用的jedis对象。 - * @param redisConnect 诸如127.0.0.1:6379的HOST:PORT连接字符串 - */ - public RedisClient(String redisConnect) { - HostPort hostPort = new HostPort(redisConnect, "127.0.0.1", 6379); - pool = new JedisPool(new JedisPoolConfig(), hostPort.getHost(), hostPort.getPort()); - } - - public RedisClient(String host, int port) { - pool = new JedisPool(new JedisPoolConfig(), host, port); - } - - - - public String get(String key) { - Jedis jedis = pool.getResource(); - try { - return jedis.get(key); - } finally { - pool.returnResource(jedis); - } - } - - public String set(String key, String value) { - Jedis jedis = pool.getResource(); - try { - return jedis.set(key, value); - } finally { - pool.returnResource(jedis); - } - } - - public String setex(String key, int seconds, String value) { - Jedis jedis = pool.getResource(); - try { - return jedis.setex(key, seconds, value); - } finally { - pool.returnResource(jedis); - } - } - - public Long incr(String key) { - Jedis jedis = pool.getResource(); - try { - return jedis.incr(key); - } finally { - pool.returnResource(jedis); - } - } - - public void expire(String key, int seconds) { - Jedis jedis = pool.getResource(); - try { - jedis.expire(key, seconds); - } - finally { - pool.returnResource(jedis); - } - } - - public Set keys(String pattern) { - Jedis jedis = pool.getResource(); - try { - return jedis.keys(pattern); - } - finally { - pool.returnResource(jedis); - } - } - - @Override - public void close() throws IOException { - pool.destroy(); - } - -} +package org.n3r.shorturl.redis; + +import java.io.Closeable; +import java.io.IOException; +import java.util.Set; + +import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisPool; +import redis.clients.jedis.JedisPoolConfig; + +public class RedisClient implements Closeable { + + public JedisPool pool; + + /** + * 生成多线程共享的使用的jedis对象。 + * @param redisConnect 诸如127.0.0.1:6379的HOST:PORT连接字符串 + */ + public RedisClient(String redisConnect) { + HostPort hostPort = new HostPort(redisConnect, "127.0.0.1", 6379); + pool = new JedisPool(new JedisPoolConfig(), hostPort.getHost(), hostPort.getPort()); + } + + public RedisClient(String host, int port) { + pool = new JedisPool(new JedisPoolConfig(), host, port); + } + + + + public String get(String key) { + Jedis jedis = pool.getResource(); + try { + return jedis.get(key); + } finally { + pool.returnResource(jedis); + } + } + + public String set(String key, String value) { + Jedis jedis = pool.getResource(); + try { + return jedis.set(key, value); + } finally { + pool.returnResource(jedis); + } + } + + public String setex(String key, int seconds, String value) { + Jedis jedis = pool.getResource(); + try { + return jedis.setex(key, seconds, value); + } finally { + pool.returnResource(jedis); + } + } + + public Long incr(String key) { + Jedis jedis = pool.getResource(); + try { + return jedis.incr(key); + } finally { + pool.returnResource(jedis); + } + } + + public void expire(String key, int seconds) { + Jedis jedis = pool.getResource(); + try { + jedis.expire(key, seconds); + } + finally { + pool.returnResource(jedis); + } + } + + public Set keys(String pattern) { + Jedis jedis = pool.getResource(); + try { + return jedis.keys(pattern); + } + finally { + pool.returnResource(jedis); + } + } + + public void close() throws IOException { + pool.destroy(); + } + +}