前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java web部署 启动线程 (监听socket等)

java web部署 启动线程 (监听socket等)

作者头像
用户1258909
发布2018-07-03 11:24:58
1.5K0
发布2018-07-03 11:24:58
举报
文章被收录于专栏:拂晓风起

很简单……

多写一个Servlet,在init函数中启动对应的线程。

把这个Servlet加到web.xml中,例如

    <servlet>         <servlet-name>EchoServiceStartUpServlet</servlet-name>         <servlet-class>EchoService.EchoServiceStartUpServlet</servlet-class>         <load-on-startup>3</load-on-startup>     </servlet>

注意load-on-startup。

后边数字要大于0,表示优先级,越小优先级越高。

不设置或者小于0表示不启动。 但这样有个很大的问题!!就是没有在Tomcat关闭的时候关闭线程,也许就是没有释放监听的端口。

应该用Listener。

代码语言:javascript
复制
public class ServerSocketListener implements ServletContextListener {
    private EchoServerThread echoServerThread;

    public void contextInitialized(ServletContextEvent event) {
        String port = event.getServletContext().getInitParameter("socketPort");
//        event.getServletContext().log("++++++++++++++++++++++++++++++++");
//        event.getServletContext().log("++++ Socket服务随web启动而启动 ++++");
        echoServerThread = new EchoServerThread(Integer.parseInt(port));
        echoServerThread.start();
//        event.getServletContext().log("++++ Socket服务已经启动完毕,端口:" + port + " ++++");
    }

    //tomcat关闭时,关闭线程,释放端口
    public void contextDestroyed(ServletContextEvent event) {
        echoServerThread.stopThread();
    }
}

 这里就有启动和释放的操作了~~~

然后在web.xml中这样配置:

在web-app节点下加入:

    <context-param>         <param-name>socketPort</param-name>         <param-value>2230</param-value>     </context-param>     <listener>         <description>Socket服务随web启动而启动</description>         <listener-class>EchoService.ServerSocketListener</listener-class>     </listener>

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2010-05-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档