如何在Windows上启动服务器应用程序
问题描述:
我创建了一个工作正常的简单客户端 - 服务器应用程序。 服务器正在侦听端口,然后启动该作业的线程。 目前唯一的方法(在IDE之外)是杀死java.exe来停止服务器。 这两个示例类都非常精简。如何在Windows上启动服务器应用程序
主类:
public static void main(String[] args) {
MultiThreadedServer server = new MultiThreadedServer(9000);
new Thread(server).start();
}
MultiThreadedServer类:
public class MultiThreadedServer implements Runnable {
protected int serverPort = 9000;
protected ServerSocket serverSocket = null;
protected Thread runningThread = null;
protected ExecutorService threadPool = Executors.newFixedThreadPool(Options.getInstance().getThreadCount());
public MultiThreadedServer(int port) {
this.serverPort = port;
}
public void run() {
synchronized (this) {
this.runningThread = Thread.currentThread();
}
openServerSocket();
while (true) {
Socket clientSocket;
try {
clientSocket = this.serverSocket.accept();
} catch (IOException e) {
throw new RuntimeException("Error accepting client connection", e);
}
try {
this.threadPool.execute(new WorkerRunnable(clientSocket, Constants.appName + " Thread"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
private void openServerSocket() {
try {
this.serverSocket = new ServerSocket(this.serverPort);
} catch (IOException e) {
throw new RuntimeException("Cannot open port " + serverPort, e);
}
}
}
我想知道,什么是启动服务器应用程序的最佳做法是什么?
答
我已经解决了我自己的问题。 我创建了一个windows批处理脚本,它处理一些预先需求并启动服务器应用程序。 并与nssm nssm我已经将此批处理文件安装为Windows服务。不是服务器应用程序可以由Windows服务控制。