操作步骤:
1、Java项目打包成可运行jar文件(XXX.jar):https://jingyan.baidu.com/article/c74d6000a464060f6a595d99.html。
2、编写bat文件,文件内容为java -jar XXX.jar。
3、编写重启程序:
3.1、监听服务器端口号是否启动:https://blog.csdn.net/danieluk/article/details/18518175。
3.2、服务器端口号停止时,启动程序
3.3、示例程序:
package server;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class PortListener {
public static void main(String[] args) {
while(true){
try {
Thread.sleep(10*1000);
if(!NetUtil.isLoclePortUsing()){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
System.err.println(df.format(new Date()));
System.out.println("8001端口已停止。。。");
boolean startPortFlag = NetUtil.startPort();
if(startPortFlag){
System.out.println("809协议启动成功");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
class NetUtil{
private static final String HOST = "10.47.192.14";
private static final int PORT = 8001;
/***
* true:already in using false:not using
* @param port
*/
public static boolean isLoclePortUsing(){
boolean flag = true;
try {
flag = isPortUsing(HOST, PORT);
} catch (Exception e) {
}
return flag;
}
/***
* true:already in using false:not using
* @param host
* @param port
* @throws UnknownHostException
*/
public static boolean isPortUsing(String host,int port) throws UnknownHostException{
boolean flag = false;
InetAddress theAddress = InetAddress.getByName(host);
try {
Socket socket = new Socket(theAddress,port);
flag = true;
} catch (IOException e) {
}
return flag;
}
public static boolean startPort(){
boolean flag = false;
String cmd = "cmd /c start F:\\809Agreement\\809Agreement.bat";
try {
Process ps = Runtime.getRuntime().exec(cmd);
ps.waitFor();
flag = true;
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return flag;
}
}