diff --git a/ikasoa-core/pom.xml b/ikasoa-core/pom.xml index ea013b9..9f0398a 100644 --- a/ikasoa-core/pom.xml +++ b/ikasoa-core/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.ikasoa ikasoa-core - 0.4.5 + 0.4.6 jar Ikasoa Core ikasoa is a java distributed service framework. @@ -121,7 +121,7 @@ org.apache.thrift libthrift - 0.9.2 + 0.9.3 org.slf4j diff --git a/ikasoa-core/src/com/ikamobile/ikasoa/core/thrift/client/pool/impl/DefaultSocketChannelPoolImpl.java b/ikasoa-core/src/com/ikamobile/ikasoa/core/thrift/client/pool/impl/DefaultSocketChannelPoolImpl.java index 23fd248..0498300 100644 --- a/ikasoa-core/src/com/ikamobile/ikasoa/core/thrift/client/pool/impl/DefaultSocketChannelPoolImpl.java +++ b/ikasoa-core/src/com/ikamobile/ikasoa/core/thrift/client/pool/impl/DefaultSocketChannelPoolImpl.java @@ -1,5 +1,6 @@ package com.ikamobile.ikasoa.core.thrift.client.pool.impl; +import java.io.IOException; import java.util.HashMap; import java.util.Hashtable; import java.util.Map; @@ -116,8 +117,16 @@ public synchronized ThriftSocketChannel buildThriftSocketChannel(String host, in byte i = 0; for (; i < size; i++) { if (!self.socketStatusArray[i]) { + ThriftSocketChannel thriftSocketChannel = getThriftSocketChannel(self, i, host, port); + if (!thriftSocketChannel.isOpen()) { + try { + thriftSocketChannel = new ThriftSocketChannel(host, port, time); + } catch (IOException e) { + throw new RuntimeException(e); + } + } self.socketStatusArray[i] = true; - return getThriftSocketChannel(self, i, host, port); + return thriftSocketChannel; } } // 如果连接不够用,就初始化连接池. diff --git a/ikasoa-core/src/com/ikamobile/ikasoa/core/thrift/client/pool/impl/DefaultSocketPoolImpl.java b/ikasoa-core/src/com/ikamobile/ikasoa/core/thrift/client/pool/impl/DefaultSocketPoolImpl.java index 7565fbf..a2d3a0c 100644 --- a/ikasoa-core/src/com/ikamobile/ikasoa/core/thrift/client/pool/impl/DefaultSocketPoolImpl.java +++ b/ikasoa-core/src/com/ikamobile/ikasoa/core/thrift/client/pool/impl/DefaultSocketPoolImpl.java @@ -116,8 +116,12 @@ public synchronized ThriftSocket buildThriftSocket(String host, int port) { byte i = 0; for (; i < size; i++) { if (!self.socketStatusArray[i]) { + ThriftSocket thriftSocket = getThriftSocket(self, i, host, port); + if (!thriftSocket.isOpen()) { + thriftSocket = new ThriftSocket(host, port, time); + } self.socketStatusArray[i] = true; - return getThriftSocket(self, i, host, port); + return thriftSocket; } } // 如果连接不够用,就初始化连接池. diff --git a/ikasoa-core/src/com/ikamobile/ikasoa/core/thrift/server/impl/AbstractThriftServerImpl.java b/ikasoa-core/src/com/ikamobile/ikasoa/core/thrift/server/impl/AbstractThriftServerImpl.java index 0576a0e..b71fa98 100644 --- a/ikasoa-core/src/com/ikamobile/ikasoa/core/thrift/server/impl/AbstractThriftServerImpl.java +++ b/ikasoa-core/src/com/ikamobile/ikasoa/core/thrift/server/impl/AbstractThriftServerImpl.java @@ -147,6 +147,9 @@ public void stop() { Thread.currentThread().interrupt(); } } + server = null; + serverSocket = null; + executorService = null; LOG.info("Stop thrift server ...... (name: " + serverName + ")"); afterStop(getThriftServerConfiguration().getServerAspect()); } else {