• 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>

    kenkofox@qq.com https://github.com/kenkozheng 欢迎投简历给我,一线大厂工作机会
  • 相关阅读:
    关于 Delphi 中的Sender和易混淆的概念(转)
    C#实现打印与打印预览功能(转)
    Quartz.NET
    如何从Powerdesigner进行数据建模并生成SQL脚本
    pentaho BI套件中PSW和PDI的连接
    Oracle中如何使用imp语言导入dmp文件
    DatePicker和DateEdit的区别
    dev控件中LookUpEdit的数据绑定问题
    如何在GridControl的某一列放入CheckBox、Button以及其他控件
    在GridControl中如何选中某一行中的某一列
  • 原文地址:https://www.cnblogs.com/kenkofox/p/1732024.html
Copyright © 2020-2023  润新知