JavaWeb服务心跳检测(双机热备)
实现JavaWeb服务的双机热备操作,这里通过WebSocket方式,设置每个一段时间发送TCP报文,通过报文接收的结果来限制主从服务的运行。
1.主服务心跳发送端代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import javax.annotation.Resource;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSONObject;
/**
* @author 作者 : xxxxx
* @version 创建时间:2021年8月22日 上午9:18:24
* 心跳检测-----主服务器发送send服务
*/
public class HeartSend implements ServletContextListener {
private SocketThread socketThread;
public void contextDestroyed(ServletContextEvent arg0) {
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
if(null==socketThread)
{
//新建线程类
socketThread=new SocketThread(null);
//启动线程
socketThread.start();
}
}
}
class SocketThread extends Thread {
private ServerSocket serverSocket = null;
public SocketThread(ServerSocket serverScoket){
try {
if(null == serverSocket){
this.serverSocket = new ServerSocket(9998);
}
} catch (Exception e) {
System.out.println("SocketThread创建socket服务出错");
e.printStackTrace();
}
}
public void run(){
try {
if(serverSocket==null){
return;
}else if(serverSocket.isClosed()){
return;
}
Socket socket = serverSocket