You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by de...@apache.org on 2017/06/22 11:50:51 UTC

cxf git commit: setter for applicationExecutor This closes #284

Repository: cxf
Updated Branches:
  refs/heads/master e9f7d73e6 -> 21618dad0


setter for applicationExecutor This closes #284


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/21618dad
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/21618dad
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/21618dad

Branch: refs/heads/master
Commit: 21618dad08506cc80edde02cf1661cecd06c49ab
Parents: e9f7d73
Author: Maxim Samoylych <ms...@sberbank-tele.com>
Authored: Thu Jun 22 13:50:14 2017 +0200
Committer: Dennis Kieselhorst <de...@apache.org>
Committed: Thu Jun 22 13:50:14 2017 +0200

----------------------------------------------------------------------
 .../netty/server/NettyHttpServerEngine.java     | 27 +++++++++++++++++---
 .../server/NettyHttpServletPipelineFactory.java | 17 +++++++++---
 2 files changed, 37 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/21618dad/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/NettyHttpServerEngine.java
----------------------------------------------------------------------
diff --git a/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/NettyHttpServerEngine.java b/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/NettyHttpServerEngine.java
index 878f5b4..6dff4e6 100644
--- a/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/NettyHttpServerEngine.java
+++ b/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/NettyHttpServerEngine.java
@@ -40,7 +40,8 @@ import io.netty.channel.ChannelOption;
 import io.netty.channel.EventLoopGroup;
 import io.netty.channel.nio.NioEventLoopGroup;
 import io.netty.channel.socket.nio.NioServerSocketChannel;
-
+import io.netty.util.concurrent.DefaultEventExecutorGroup;
+import io.netty.util.concurrent.EventExecutorGroup;
 
 public class NettyHttpServerEngine implements ServerEngine {
 
@@ -92,6 +93,7 @@ public class NettyHttpServerEngine implements ServerEngine {
     // TODO need to setup configuration about them
     private EventLoopGroup bossGroup;
     private EventLoopGroup workerGroup;
+    private EventExecutorGroup applicationExecutor;
 
     public NettyHttpServerEngine() {
 
@@ -141,6 +143,9 @@ public class NettyHttpServerEngine implements ServerEngine {
         if (workerGroup == null) {
             workerGroup = new NioEventLoopGroup();
         }
+        if (applicationExecutor == null) {
+            applicationExecutor = new DefaultEventExecutorGroup(threadingParameters.getThreadPoolSize());
+        }
 
         final ServerBootstrap bootstrap = new ServerBootstrap();
         bootstrap.group(bossGroup, workerGroup)
@@ -151,9 +156,8 @@ public class NettyHttpServerEngine implements ServerEngine {
         servletPipeline =
             new NettyHttpServletPipelineFactory(
                  tlsServerParameters, sessionSupport,
-                 threadingParameters.getThreadPoolSize(),
-                 maxChunkContentSize,
-                 handlerMap, this);
+                 maxChunkContentSize, handlerMap,
+                 this, applicationExecutor);
         // Start the servletPipeline's timer
         servletPipeline.start();
         bootstrap.childHandler(servletPipeline);
@@ -235,6 +239,9 @@ public class NettyHttpServerEngine implements ServerEngine {
         // just unbind the channel
         if (servletPipeline != null) {
             servletPipeline.shutdown();
+        } else if (applicationExecutor != null) {
+            // shutdown executor if it set but not server started
+            applicationExecutor.shutdownGracefully();
         }
 
         if (serverChannel != null) {
@@ -329,4 +336,16 @@ public class NettyHttpServerEngine implements ServerEngine {
     public EventLoopGroup getWorkerGroup() {
         return workerGroup;
     }
+
+    public EventExecutorGroup getApplicationExecutor() {
+        return applicationExecutor;
+    }
+
+    public void setApplicationExecutor(EventExecutorGroup applicationExecutor) {
+        if (this.applicationExecutor == null) {
+            this.applicationExecutor = applicationExecutor;
+        } else {
+            throw new IllegalStateException("applicationExecutor is already defined");
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/cxf/blob/21618dad/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/NettyHttpServletPipelineFactory.java
----------------------------------------------------------------------
diff --git a/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/NettyHttpServletPipelineFactory.java b/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/NettyHttpServletPipelineFactory.java
index eec502a..5c27ae5 100644
--- a/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/NettyHttpServletPipelineFactory.java
+++ b/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/NettyHttpServletPipelineFactory.java
@@ -69,21 +69,32 @@ public class NettyHttpServletPipelineFactory extends ChannelInitializer<Channel>
 
     private final NettyHttpServerEngine nettyHttpServerEngine;
 
+    /**
+     * @deprecated use {@link #NettyHttpServletPipelineFactory(TLSServerParameters, boolean, int, Map,
+     * NettyHttpServerEngine, EventExecutorGroup)}
+     */
+    @Deprecated
     public NettyHttpServletPipelineFactory(TLSServerParameters tlsServerParameters,
                                            boolean supportSession, int threadPoolSize, int maxChunkContentSize,
                                            Map<String, NettyHttpContextHandler> handlerMap,
                                            NettyHttpServerEngine engine) {
+        this(tlsServerParameters, supportSession, maxChunkContentSize, handlerMap, engine,
+                new DefaultEventExecutorGroup(threadPoolSize));
+    }
+
+    public NettyHttpServletPipelineFactory(TLSServerParameters tlsServerParameters,
+                                           boolean supportSession, int maxChunkContentSize,
+                                           Map<String, NettyHttpContextHandler> handlerMap,
+                                           NettyHttpServerEngine engine, EventExecutorGroup applicationExecutor) {
         this.supportSession = supportSession;
         this.watchdog = new HttpSessionWatchdog();
         this.handlerMap = handlerMap;
         this.tlsServerParameters = tlsServerParameters;
         this.maxChunkContentSize = maxChunkContentSize;
         this.nettyHttpServerEngine = engine;
-        //TODO need to configure the thread size of EventExecutorGroup
-        applicationExecutor = new DefaultEventExecutorGroup(threadPoolSize);
+        this.applicationExecutor = applicationExecutor;
     }
 
-
     public Map<String, NettyHttpContextHandler> getHttpContextHandlerMap() {
         return handlerMap;
     }