项目启动开启socket服务
2014-12-22 11:34
281 查看
Web项目中需要在项目启动时开启socket服务
用于收发消息
1.web.xml中配置
端口号为9999的socket 服务端,添加监听
<context-param>
<param-name>socketPort</param-name>
<param-value>9999</param-value>
</context-param>
<listener>
<description>Socket服务随web启动而启动</description>
<listener-class>com.util.Mylistener</listener-class>
</listener>
2.监听类
单开一个线程,负责socket
public class Mylistener implements ServletContextListener{
private SocketThread socketThread;
public void contextDestroyed(ServletContextEvent e){
if(socketThread!=null && socketThread.isInterrupted()){
socketThread.closeServerSocket();
socketThread.interrupt();
}
}
public void contextInitialized(ServletContextEvent e){
ServletContext servletContext = e.getServletContext();
if(servletContext!=null && socketThread==null){
socketThread=new SocketThread(null,servletContext);
socketThread.start();
}
}
}
3.socket线程
public class SocketThread extends Thread{
private ServletContext servletContext;
private ServerSocket serverSocket;
public SocketThread(ServerSocket serverSocket,ServletContext servletContext){
this.servletContext=servletContext;
//从web.xml中context-param节点获取socket端口
String port=this.servletContext.getInitParameter("socketPort");
if(serverSocket==null){
try{
this.serverSocket=new ServerSocket(Integer.parseInt(port));
}catch(IOException e){
e.printStackTrace();
}
}
}
public void run(){
while(!this.isInterrupted()){
//线程未中断执行循环
try{
Socket socket=serverSocket.accept();
if(socket!=null)
new SocketData(socket,this.servletContext).start();
}catch(IOException e){
e.printStackTrace();
}
}
}
public void closeServerSocket(){
try{
if(serverSocket!=null&&!serverSocket.isClosed())
serverSocket.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
用于收发消息
1.web.xml中配置
端口号为9999的socket 服务端,添加监听
<context-param>
<param-name>socketPort</param-name>
<param-value>9999</param-value>
</context-param>
<listener>
<description>Socket服务随web启动而启动</description>
<listener-class>com.util.Mylistener</listener-class>
</listener>
2.监听类
单开一个线程,负责socket
public class Mylistener implements ServletContextListener{
private SocketThread socketThread;
public void contextDestroyed(ServletContextEvent e){
if(socketThread!=null && socketThread.isInterrupted()){
socketThread.closeServerSocket();
socketThread.interrupt();
}
}
public void contextInitialized(ServletContextEvent e){
ServletContext servletContext = e.getServletContext();
if(servletContext!=null && socketThread==null){
socketThread=new SocketThread(null,servletContext);
socketThread.start();
}
}
}
3.socket线程
public class SocketThread extends Thread{
private ServletContext servletContext;
private ServerSocket serverSocket;
public SocketThread(ServerSocket serverSocket,ServletContext servletContext){
this.servletContext=servletContext;
//从web.xml中context-param节点获取socket端口
String port=this.servletContext.getInitParameter("socketPort");
if(serverSocket==null){
try{
this.serverSocket=new ServerSocket(Integer.parseInt(port));
}catch(IOException e){
e.printStackTrace();
}
}
}
public void run(){
while(!this.isInterrupted()){
//线程未中断执行循环
try{
Socket socket=serverSocket.accept();
if(socket!=null)
new SocketData(socket,this.servletContext).start();
}catch(IOException e){
e.printStackTrace();
}
}
}
public void closeServerSocket(){
try{
if(serverSocket!=null&&!serverSocket.isClosed())
serverSocket.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
相关文章推荐
- (转) java web 项目启动开启 socket server
- java web 项目启动开启 socket
- java web 项目启动开启 socket server 作者:Mchange
- JAVA实践-TOMCAT启动项目提示的各种异常:空指针异常,未开启服务等
- ubuntu 让服务开启启动
- 在linux上开启一个socket服务(一)
- Android高手进阶教程(十八)之---列出Android设备中所有启动的服务,及判断某个服务是否开启!
- Myeclipse中启动Tomcat或weblogic服务出现Transport dt_socket failed to initialize,rc=509错误
- [导入]我们的项目中为socket通信服务的“心跳包”
- Linux下打开启动服务命令(chkconfig、ntsysv),查看开启了哪些服务
- 15.列出Android设备中所有启动的服务及判断某个服务是否开启
- 厦门启动“移动旅游通”项目 提升旅游信息服务水平
- java web 项目启动开启 socket server
- Android高手进阶教程(十八)之---列出Android设备中所有启动的服务,及判断某个服务是否开启!
- Android高手进阶教程(十八)之---列出Android设备中所有启动的服务,及判断某个服务是否开启!
- Android高手进阶教程(十八)之---列出Android设备中所有启动的服务,及判断某个服务是否开启!
- avast启动系统图标显示一个红叉,开启avast服务 拒绝访问
- Android高手进阶教程(十八)之---列出Android设备中所有启动的服务,及判断某个服务是否开启!
- Myeclipse中启动Tomcat服务出现Transport dt_socket failed to initialize,rc=509错误
- java-列出Android设备中所有启动的服务,及判断某个服务是否开启! - 随心