关于javaweb 项目 ssm框架 启动tomcat服务器同时启动一个socket服务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于javaweb 项目 ssm框架 启动tomcat服务器同时启动一个socket服务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3208字,纯文字阅读大概需要5分钟。
内容图文
![关于javaweb 项目 ssm框架 启动tomcat服务器同时启动一个socket服务](/upload/InfoBanner/zyjiaocheng/797/1b91a1b514d74a0d9f482e524b3d0967.jpg)
1.创建监听类
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* 将socket service随tomcat启动
* @author huajian
*/
public class SocketServiceLoader implements ServletContextListener{
//socket server 线程
private SocketThread socketThread;
@Override
public void contextDestroyed(ServletContextEvent arg0) {
if(null!=socketThread && !socketThread.isInterrupted())
{
socketThread.closeSocketServer();
socketThread.interrupt();
}
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub
if(null==socketThread)
{
//新建线程类
socketThread=new SocketThread(null);
//启动线程
socketThread.start();
}
}
}
2.创建生产socket线程类:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import javax.servlet.ServletContext;
/**
* socket 线程类
* @author huajian
*/
public class SocketThread extends Thread{
private ServerSocket serverSocket = null;
public SocketThread(ServerSocket serverScoket){
try {
if(null == serverSocket){
this.serverSocket = new ServerSocket(4700);
System.out.println("socket start");
}
} catch (Exception e) {
System.out.println("SocketThread创建socket服务出错");
e.printStackTrace();
}
}
public void run(){
while(!this.isInterrupted()){
try {
Socket socket = serverSocket.accept();
if(null != socket && !socket.isClosed()){
//处理接受的数据
new SocketOperate(socket).start();
}
socket.setSoTimeout(30000);
}catch (Exception e) {
e.printStackTrace();
}
}
}
public void closeSocketServer(){
try {
if(null!=serverSocket && !serverSocket.isClosed())
{
serverSocket.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3.创建处理客户端发送报文的类:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import javax.servlet.ServletContext;
/**
* 多线程处理socket接收的数据
* @author huajian
*
*/
public class SocketOperate extends Thread{
private Socket socket;
public SocketOperate(Socket socket) {
this.socket=socket;
}
@SuppressWarnings("unused")
public void run()
{
try{
InputStream in= socket.getInputStream();
PrintWriter out=new PrintWriter(socket.getOutputStream());
//BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
while(true){
//读取客户端发送的信息
String strXML = "";
byte[] temp = new byte[1024];
int length = 0;
while((length = in.read(temp)) != -1){
strXML += new String(temp,0,length);
}
if("end".equals(strXML)){
System.out.println("准备关闭socket");
break;
}
if("".equals(strXML))
continue;
System.out.println("客户端发来:"+strXML.toString());
// MethodHandler mh = new MethodHandler(ReadXML.readXML(strXML.toString()));
// String resultXML = mh.getResultXML();
// System.out.println("返回:"+resultXML.toString());
// if(!"".equals(resultXML)){
// out.print(resultXML);
out.flush();
out.close();
// }
}
socket.close();
System.out.println("socket stop.....");
}catch(IOException ex){
}finally{
}
}
}
4.配置web.xml中配置监听
<listener>
<listener-class>com.novolion.wateriot.server.SocketServiceLoader</listener-class>
</listener>
内容总结
以上是互联网集市为您收集整理的关于javaweb 项目 ssm框架 启动tomcat服务器同时启动一个socket服务全部内容,希望文章能够帮你解决关于javaweb 项目 ssm框架 启动tomcat服务器同时启动一个socket服务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。