소스 검색

Merge pull request #2104 from lneves/master

netty update
Nate 9 년 전
부모
커밋
5697da0261
2개의 변경된 파일11개의 추가작업 그리고 5개의 파일을 삭제
  1. 2 2
      frameworks/Java/netty/pom.xml
  2. 9 3
      frameworks/Java/netty/src/main/java/hello/HelloWebServer.java

+ 2 - 2
frameworks/Java/netty/pom.xml

@@ -12,12 +12,12 @@
 		<dependency>
 			<groupId>io.netty</groupId>
 			<artifactId>netty-codec-http</artifactId>
-			<version>4.1.0.CR4</version>
+			<version>4.1.0.CR7</version>
 		</dependency>
 		<dependency>
 			<groupId>io.netty</groupId>
 			<artifactId>netty-transport-native-epoll</artifactId>
-			<version>4.1.0.CR4</version>
+			<version>4.1.0.CR7</version>
 			<classifier>linux-x86_64</classifier>
 		</dependency>
 		<dependency>

+ 9 - 3
frameworks/Java/netty/src/main/java/hello/HelloWebServer.java

@@ -9,6 +9,7 @@ import io.netty.channel.ChannelOption;
 import io.netty.channel.EventLoopGroup;
 import io.netty.channel.ServerChannel;
 import io.netty.channel.epoll.Epoll;
+import io.netty.channel.epoll.EpollChannelOption;
 import io.netty.channel.epoll.EpollEventLoopGroup;
 import io.netty.channel.epoll.EpollServerSocketChannel;
 import io.netty.channel.nio.NioEventLoopGroup;
@@ -32,17 +33,22 @@ public class HelloWebServer {
 		// Configure the server.
 
 		if (Epoll.isAvailable()) {
-			doRun(new EpollEventLoopGroup(), EpollServerSocketChannel.class);
+			doRun(new EpollEventLoopGroup(), EpollServerSocketChannel.class, true);
 		} else {
-			doRun(new NioEventLoopGroup(), NioServerSocketChannel.class);
+			doRun(new NioEventLoopGroup(), NioServerSocketChannel.class, false);
 		}
 	}
 
-	private void doRun(EventLoopGroup loupGroup, Class<? extends ServerChannel> serverChannelClass) throws InterruptedException {
+	private void doRun(EventLoopGroup loupGroup, Class<? extends ServerChannel> serverChannelClass, boolean isNative) throws InterruptedException {
 		try {
 			InetSocketAddress inet = new InetSocketAddress(port);
 
 			ServerBootstrap b = new ServerBootstrap();
+
+			if (isNative) {
+				b.option(EpollChannelOption.SO_REUSEPORT, true);
+			}
+
 			b.option(ChannelOption.SO_BACKLOG, 1024);
 			b.option(ChannelOption.SO_REUSEADDR, true);
 			b.group(loupGroup).channel(serverChannelClass).childHandler(new HelloServerInitializer(loupGroup.next()));