操作步驟:
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;
}
}