tjgamejx2
司马晨风
2009-12-19 13:19

在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条回答

  • lzj0470 lzj0470 12年前

    [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]
    不知道这样是否满足你的需求啦

    点赞 评论 复制链接分享

相关推荐