Thrift 端口监听问题 java

阿莫西林布洛芬 2017-08-09 03:47:59
环境: linux centos 6.5 + apache
将thrift server 部署到 linux tomcat 启动 过段时间后 thrift 的端口 失去监听

不知道有没有大神遇到过这个问题

代码入下:

public class ThriftService3 {
private TServer server;

public void init(int port, TProcessor processor) {
try {
// 传输通道 - 非阻塞方式
TNonblockingServerSocket serverTransport = new TNonblockingServerSocket(port);
TThreadedSelectorServer.Args tArgs = new TThreadedSelectorServer.Args(serverTransport);
tArgs.processor(processor);
tArgs.transportFactory(new TFramedTransport.Factory());
// 二进制协议
tArgs.protocolFactory(new TBinaryProtocol.Factory());
tArgs.selectorThreads(2);
ExecutorService pool = Executors.newFixedThreadPool(3);
tArgs.executorService(pool);
// 多线程半同步半异步的服务模型
server = new TThreadedSelectorServer(tArgs);
} catch (TTransportException e) {
e.printStackTrace();
}
}

public void init(int port, Map<String, TProcessor> processorMap) {
try {
// 传输通道 - 非阻塞方式
TNonblockingServerSocket serverTransport = new TNonblockingServerSocket(port);
TThreadedSelectorServer.Args tArgs = new TThreadedSelectorServer.Args(serverTransport);
TMultiplexedProcessor processor = new TMultiplexedProcessor();
Set<String> keys = processorMap.keySet();
for (String key : keys) {
TProcessor pro = processorMap.get(key);
processor.registerProcessor(key, pro);
}
tArgs.processor(processor);
tArgs.transportFactory(new TFramedTransport.Factory());
// 二进制协议
tArgs.protocolFactory(new TBinaryProtocol.Factory());
// 多线程半同步半异步的服务模型
int num = Runtime.getRuntime().availableProcessors() * 2 + 1;
tArgs.selectorThreads(num);
tArgs.workerThreads(num * 10);
server = new TThreadedSelectorServer(tArgs);
} catch (TTransportException e) {
e.printStackTrace();
}
}

public void start() {
server.serve(); // 启动服务
}

public void destory() {
server.stop();
}

public boolean isServing() {
return server.isServing();
}

public static void main(String[] args) throws UnknownHostException, IOException {
Socket so = new Socket("115.159.147.94", 19526);
so.close();
}
}

启动方法:
public ThriftService3 server3;

public void startThriftLinsten3() {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
int port = 19528;
server3 = new ThriftService3();
TProcessor tprocessor = new TeamService.Processor<>(new TeamServiceImpl());
server3.init(port, tprocessor);
server3.start();
}
});
t.setName("team thrift thread3");
t.start();
}
...全文
299 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,408

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧