(转) java web 项目启动开启 socket server
来源:互联网 发布:国家电网数据分析师 编辑:程序博客网 时间:2024/05/16 17:19
web.xml中配置监听
- <!-- 开启socket服务 -->
- <listener>
- <listener-class>com.ainong.socket.server.SocketServiceLoader</listener-class>
- </listener>
监听类
- import javax.servlet.ServletContext;
- import javax.servlet.ServletContextEvent;
- import javax.servlet.ServletContextListener;
- /**
- * 将socket service随tomcat启动
- * @author zhangzhongwen
- *
- */
- 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();
- }
- }
- }
生产socket线程类:
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.net.ServerSocket;
- import java.net.Socket;
- import javax.servlet.ServletContext;
- /**
- * socket 线程类
- * @author zhangzhongwen
- *
- */
- public class SocketThread extends Thread{
- private ServerSocket serverSocket = null;
- public SocketThread(ServerSocket serverScoket){
- try {
- if(null == serverSocket){
- this.serverSocket = new ServerSocket(8877);
- 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();
- }
- }
- }
处理客户端发送报文的类
- 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 zhangzhongwen
- *
- */
- 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{
- }
- }
- }
0 0
- (转) java web 项目启动开启 socket server
- java web 项目启动开启 socket server
- java web 项目启动开启 socket server
- java web 项目启动开启 socket server 作者:Mchange
- java web 项目启动开启 socket server 作者:Mchange
- 项目启动开启socket服务
- 关于java web 启动socket
- java web工程启动socket服务
- java web工程启动socket服务
- java web工程启动socket服务
- 初学socket(Server.java)
- Java Web项目Server窗口NullPointerException问题
- Java web项目启动加载顺序
- Java Web项目启动加载顺序
- java web项目启动即加载类
- web项目启动报java.lang.ClassNotFoundException
- web项目启动初始化java Demo
- java web项目的启动及初始化
- 同步工具类一:闭锁(java.util.concurrent.CountDownLatch)
- React Native开发之IDE(Atom+Nuclide)安装,运行,调试
- Dojo学习之Class(类)
- JDK的配置
- Spring Boot 1--新建简单Hello Spring Boot案例
- (转) java web 项目启动开启 socket server
- springmvc 定时器2
- Struts2学习之一
- 关于Spring 代码中执行事务回滚
- springboot 使用缓存
- 关于多个页面同样内容的引入
- 论文中word2010下目录的生成及多级列表的设置
- 完数
- (c++)编写一个程序,输入a、b、c三个值,输出其中最大值。