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 条评论
登录 后参与评论

相关文章

来自专栏Java后端生活

JavaWeb(十六)Listener监听器

监听器:专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。

1404
来自专栏闵开慧

django中系统时间设置

打开settings.py,找到如下内容 # Local time zone for this installation. Choices can be fou...

2938
来自专栏Java3y

监听器第二篇【统计网站人数、自定义session扫描器、踢人小案例】

从第一篇已经讲解过了监听器的基本概念,以及Servlet各种的监听器。这篇博文主要讲解的是监听器的应用。 统计网站在线人数 分析 我们在网站中一般使用Sessi...

3819
来自专栏玩转JavaEE

SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(二)

当前后端分离时,权限问题的处理也和我们传统的处理方式有一点差异。笔者前几天刚好在负责一个项目的权限管理模块,现在权限管理模块已经做完了,我想通过5-6篇文章,来...

9209
来自专栏lgp20151222

WebApplicationContext类的作用

792
来自专栏HTML5学堂

2016.06 第二周 群问题分享

HTML+CSS display:none与visibility:hidden相同点与不同点 2016.06.06~2016.06.10 核心概念 displa...

3368
来自专栏Java3y

过滤器第一篇【介绍、入门、简单应用】

什么是过滤器 过滤器是Servlet的高级特性之一,也别把它想得那么高深,只不过是实现Filter接口的Java类罢了! 首先,我们来看看过滤器究竟Web容器的...

2685
来自专栏别先生

基于jsp+servlet图书管理系统之后台用户信息修改操作

上一篇的博客写的是查询操作,且附有源码和数据库,这篇博客写的是修改操作,附有从头至尾写的代码(详细的注释)和数据库!  此次修改操作的源码和数据库:http:...

39610
来自专栏芋道源码1024

数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 路由(一)之分库分表配置

本文主要基于 Sharding-JDBC 1.5.0 正式版 1. 概述 2. TableRule 2.2.1 DataNode 2.2.2 DynamicD...

47816
来自专栏大内老A

EndpointAddress——不只是一个Uri[下篇]

《上篇》对AddressHeader在服务端和客户端的作用,以及如何通过配置和编成的方式设置AddressHeader进行了详细介绍。现在我们通过一个实例来演示...

1967

扫码关注云+社区