很简单……
多写一个Servlet,在init函数中启动对应的线程。
把这个Servlet加到web.xml中,例如
EchoServiceStartUpServlet
EchoService.EchoServiceStartUpServlet
3
注意load-on-startup。
后边数字要大于0,表示优先级,越小优先级越高。
不设置或者小于0表示不启动。
但这样有个很大的问题!!就是没有在Tomcat关闭的时候关闭线程,也许就是没有释放监听的端口。
应该用Listener。
代码
publicclassServerSocketListenerimplementsServletContextListener {privateEchoServerThread echoServerThread;publicvoidcontextInitialized(ServletContextEvent event) {
String port=event.getServletContext().getInitParameter("socketPort");//event.getServletContext().log("++++++++++++++++++++++++++++++++");//event.getServletContext().log("++++ Socket服务随web启动而启动 ++++");echoServerThread=newEchoServerThread(Integer.parseInt(port));
echoServerThread.start();//event.getServletContext().log("++++ Socket服务已经启动完毕,端口:" + port + " ++++");}//tomcat关闭时,关闭线程,释放端口publicvoidcontextDestroyed(ServletContextEvent event) {
echoServerThread.stopThread();
}
}
这里就有启动和释放的操作了~~~
然后在web.xml中这样配置:
在web-app节点下加入:
socketPort
2230
Socket服务随web启动而启动
EchoService.ServerSocketListener