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

相关文章

来自专栏阮一峰的网络日志

WebSocket 教程

WebSocket 是一种网络通信协议,很多高级功能都需要它。 本文介绍 WebSocket 协议的使用方法。 ? 一、为什么需要 WebSocket? 初次接...

5027
来自专栏IMWeb前端团队

HTTP缓存控制小结

引言 通过网络获取内容既缓慢,成本又高:大的响应需要在客户端和服务器之间进行多次往返通信,这拖延了浏览器可以使用和处理内容的时间,同时也增加了访问者的数据成本。...

2398
来自专栏偏前端工程师的驿站

.Net魔法堂:发个带附件的邮件

一、前言                             由于工作需要最近把邮件发送封装成WebService,现在把代码记录在此,以便日后查阅。 二、...

1819
来自专栏阿杜的世界

RocketMQ学习-NameServer-1

NameServer在RocketMQ中的角色是配置中心,主要有两个功能:Broker管理、路由管理。因此NameServer上存放的主要信息也包括两类:Bro...

973
来自专栏Java架构沉思录

你不得不知道的HTTP状态码有哪些

100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。

702
来自专栏云霄雨霁

应用层的常见协议

1520
来自专栏magicsoar

html5利用websocket完成的推送功能(tomcat)

利用websocket和java完成的消息推送功能,服务器用的是tomcat7.0.42,一些东西是自己琢磨的,也不知道恰不恰当,不恰当处,还请各位见谅,并指出...

3756
来自专栏前端杂货铺

使用ETag进行session的降级

回顾 在web后台开发中我们经常需要存储一些变量到session中进行暂存,最为特殊的就是“购物车”,由于http的无状态特性,因此我们需要在客户端打上一个标记...

3656
来自专栏零基础使用Django2.0.1打造在线教育网站

关于HTTP不能不说的秘密

超文本传输协议(HTTP,HyperText Transfer Protocol) 是互联网上应用最为广泛的一种网络协议。所有WWW文件都必须遵守这个标准。设计...

653
来自专栏散尽浮华

proxy_pass根据path路径转发时的"/"问题记录

在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/。当加上了/,相当于是绝对根路径,则nginx不...

28410

扫码关注云+社区