专栏首页拂晓风起java web部署 启动线程 (监听socket等)

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

很简单……

多写一个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。

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>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 事件响应的优先级、stopProgapation禁止下层组件响应

    用户1258909
  • cocos2d-js 自定义事件监听派发

    用户1258909
  • 让tomcat跑起php(caucho quercus简单用法,tomcat运行php)

    用户1258909
  • springmvc 项目完整示例07 设置配置整合springmvc springmvc所需jar包springmvc web.xml文件配置

    一个web项目,启动的时候,容器这里指的是tomcat这种,会首先读取web.xml配置文件里面的配置

    noteless
  • Vue中的Observable()

    随着组件的细化,就会遇到多组件状态共享的情况, Vuex当然可以解决这类问题,不过就像 Vuex官方文档所说的,如果应用不够大,为避免代码繁琐冗余,最好不要使用...

    刘亦枫
  • web scraper 提问须知

    由于日常工作较忙,不能及时回复微信公众号私信,一般我会在晚上 9 点后统一查看私信。

    卤代烃
  • python 字典关键字排序

    rows = [ {'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}, {'fname': 'David',...

    用户5760343
  • 前沿 | 腾讯AI Lab张潼:如何在公司中建立AI的技术能力-EmTech回顾

    本文转载自 DeepTech深科技 腾讯人工智能实验室 AI Lab,这是腾讯的一个前沿研究的机构。它的使命是自主研发 AI 最先进的技术能力,同时 AI...

    腾讯高校合作
  • 推荐一款轻量化、易用的css框架bulma.css

    最大的特点:简单好用 提供二十多种常用组件,比如表单 、表格、图标、面包屑、菜单、导航、Modal 窗口等等。简单的网站,可以不用写任何 CSS 代码。

    薛定喵君
  • 业界|腾讯AI Lab张潼:三目标四方向,研发AI最先进的技术能力

    AI 科技评论按:2018 年,《麻省理工科技评论》将 EmTech 全球新兴科技峰会带到了中国,AI 科技评论了解到在大会现场,来自亚马逊、高通、英伟达、IB...

    AI科技评论

扫码关注云+社区

领取腾讯云代金券