关于javaweb项目ssm框架启动tomcat服务器同时启动一个socket服务

author author     2022-09-16     532

关键词:

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>

 

关于tomcat启动servlet工程与映射的访问javaweb(代码片段)

@[toc]一.前言上文的【Maven父子项目工程中的Servlet优化与准备】一文中我们已经建立好了需要的工程,本文,我们尝试搭建第一个Servlet项目。二.HelloServletServlet接口在sun公司有俩个默认的实现类:HttpServlet和GenericServlet新建立一个j... 查看详情

ssm项目启动tomcat抛出classnotfoundexception(代码片段)

项目采用ssm框架,我为了让项目的jar包可以让其他project也可以使用,将项目需要的jar包放进一个FacetedProject中,这是模仿之前实习公司的作法,然后配置web.xml、applicationContext.xml等,各项完事,在BuildPath正... 查看详情

基于javaweb基于ssm框架学生信息管理(选课)系统设计与实现(项目源码)

1、项目介绍系统开发平台:JDK1.8+Windows10+Maven3.6.1开发语言:Java后台框架:SSM前端:JavaScript、jQuery、bootstrap4数据库:MySql8.0+Navicat开发环境:IntellijIdea浏览器:Chrome或360 查看详情

javaweb关于idea中本地启动项目配置正常,接口访问正常,打包war文件接口访问404的问题

最近写了个JavaWeb的例子,接口很简单,只有一个接口,接口访问项目配置:后续还改各种百度修改了其他地方,甚至于Tomcat也去修改了,过程不再描述…总之,在idea访问正常,接口访问正常,... 查看详情

javaweb超级简单网上购物商城系统源码ssm框架结构

项目介绍系统开发平台:Windows10技术框架:ssm前端框架:jquery+div+css开发环境:IDEA+mysql8.x浏览器:Chrome或360浏览器项目展示:前端页面后端页面 查看详情

javaweb关于idea中本地启动项目配置正常,接口访问正常,打包war文件接口访问404的问题

最近写了个JavaWeb的例子,接口很简单,只有一个接口,接口访问项目配置:后续还改各种百度修改了其他地方,甚至于Tomcat也去修改了,过程不再描述…总之,在idea访问正常,接口访问正常,... 查看详情

javaweb基于ssm框架校园即时服务平台管理系统设计与实现(项目源码)

1、项目介绍系统开发平台:JDK1.8+Windows7+Maven3.6.1开发语言:Java后台框架:SSM前端:layui数据库:MySql5.7Navicat开发环境:IntellijIdea浏览器:Chrome或360浏览器本系统分为两个用户:学生、管理员。... 查看详情

ssm项目启动tomcat抛出classnotfoundexception(代码片段)

项目采用ssm框架,我为了让项目的jar包可以让其他project也可以使用,将项目需要的jar包放进一个FacetedProject中,这是模仿之前实习公司的作法,然后配置web.xml、applicationContext.xml等,各项完事,在BuildPath正... 查看详情

javaweb项目部署到linux的tomcat无法访问到,提示404.

在windows开发环境中,可以正常访问。将项目部署到linux,tomcat的webapp下无法访问到项目,提示404,浏览器访问路径在windows和linux下难道有什么不同?还是linux需要什么权限?PS:服务器是阿里云ECStomcat启动正常,可以访问到tomcat主... 查看详情

关于javaweb项目中文日志以及文件中文内容乱码解决

1、查看项目编码格式与日志文件格式是否一致,如统一UTF-82、使用Linux命令locale查看Linux系统编码    保证跟项目编码一致。  修改Linux系统编码 vim/etc/sysconfig/i18n    2、首先查看Tomcat启动脚本catalina.sh是否有&... 查看详情

基于ssm的javaweb应用开发原理初探

...SM的Java开发做一快速入门,方便读者尽快把握脉络,理解JavaWeb开发的主轴,便于做进一步深入学习。关于第一代MVC开发可见:JavaWeb开发之详解Servlet及Servlet容器SpringMVC跟许多MVC框架一样,S 查看详情

云服务器部署javaweb项目tomcat启动后页面无法正常跳转

云服务器部署javaweb项目tomcat启动后页面无法正常跳转,启动tomcat可以进入index.jsp,但是进入不了其它页面,只要点击连接进入其它页面就是404错误,但是在本地运行没有问题啊,这是啥问题想到两种可能1,你URL没写端口2,启动tomc... 查看详情

javaweb基于ssm框架学生信息管理(成绩)系统设计与实现(项目源码+报告设计说明)

1开发环境及所用知识体系41.1开发平台、开发工具、应用服务器的介绍42系统需求42.1系统总体需求说明42.2系统流程图42.3功能结构图53技术选型63.1所使用技术的简要介绍64功能模块84.1学生信息维护84.1.1数据库设计84.1.2模块功能及... 查看详情

intellij13新建javaweb项目并用tomcat7启动

...置tomcat7,今天下午挣扎了一下午,总算搞清楚如何新建javaweb项目 查看详情

ssm框架搭建教程(从零开始,图文结合)(代码片段)

...如下效果 整个博客共分为三部分:建立基于Maven的WEB项目,启动Tomcat,项目启动整合Mybatis+Spring,进行单元测试可以完成从数据库查询出数据功能整合Mybaits+Spring+SpringMVC,输入Url完成整个MVC的流程2、步骤因为说的比较细,所... 查看详情

idea导入别人的javaweb项目进行部署(代码片段)

...问题,删除之后确实能够启动tomcat了,我导入的javaweb项目是通过访问index.jsp进行访问项目,发现该配置的都配置了,硬是没有编译成功,没有把主入口编译出来&#x 查看详情

如何发布javaweb项目,需要做啥配置?

如何发布javaweb项目,需要做什么配置?在编译器里按步骤发布。例如MyEclipse:点击首选项,找到TomCat,配置TomCat路径。点击部署,将项目放入配置的TomCat里。点击启动,在浏览器打开http://localhost:8080/<项目名>完成发布。直... 查看详情

怎么查看javaweb项目的框架?

...劲,我是小白,几乎看不懂,所以来问问参考技术A查看JavaWeb使用的框架最简单的方法是检查正在使用哪些配置文件。通常,必须将一些配置文件添加到框架集成中。例如,框架spring将具有一系列文件,例如spring。而mybatis框架将... 查看详情