在tomcat启动时候启动一个socket长连接的问题

因为业务需要,需要在tomcat启动时就启动一个长连接socket,用来接收后台的数据。

当然,也许你和我一样,一开始就想到在servlet的init方法中启动这个socket,然后把它调成启动顺序1.或者写个listener。

 

但是,这个socket是个长连接。

init(){

    启动socket

}

这个socket启动之后,关闭方法应该是写在destory方法中,那么init方法永远无法退出了。

 

我又想,把这个socket服务,写在一个线程里,在init方法启动这个线程,启动完事了,就return

init(){

     socketThread.run();

     return;

}

 

但是,这个线程不run完,init方法是不会结束的。

 

请教高手,这个问题怎么解决;

 

我的需求是:tomcat启动时,启动一个长连接socket

1个回答

[code="java"]
servlet类
Socket socket = null;
public void init() throws ServletException {
// Put your code here
socketThread sthread = new socketThread();
sthread.start();
socket = sthread.getSocket();
}
socketThread类
public socketThread extends Thread{
private static Socket s = null;
public void run()
{
try
{
ServerSocket listener = new ServerSocket(port);
while(true){
//相关业务
s = listener.accept();
}
}catch(Exception ex){

    }
}
public Socket getSocket(){
     return s;
}

}
[/code]
不知道这样是否满足你的需求啦

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐