司马晨风 2009-12-19 13:19
浏览 620
已采纳

在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 2009-12-19 14:10
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!