如何关机com.sun.net.httpserver.HttpServer?
-
06-09-2019 - |
题
嵌入在JDK 6 HTTP服务器是一个很大的帮助开发Web服务,但我有,我发表了端点,然后将代码应声而离开运行服务器的情况。
你如何关闭嵌入式服务器,一旦你已经失去了对它的引用(或公布的端点)?
没有正确的解决方案
其他提示
我用下面的代码来启动它
this.httpServer = HttpServer.create(addr, 0);
HttpContext context = this.httpServer.createContext("/", new DocumentProcessHandler());
this.httpThreadPool = Executors.newFixedThreadPool(this.noOfThreads);
this.httpServer.setExecutor(this.httpThreadPool);
this.httpServer.start();
和下面的代码来阻止它
this.httpServer.stop(1);
this.httpThreadPool.shutdownNow();
我从来没有使用之前,这台服务器,我无法找到任何好的文档。也许这些不太优雅的解决方案已经发生了你们,但我只是想我会提到他们。
好像com.sun.net.httpserver.HttpServer具有称为HttpServerImpl实现类。它有一个方法叫做停止()。
也许你可以找到线程监听套接字服务器和呼叫中断()。
这是肖恩
如何不失去基准呢?当你说你的代码崩溃,我想你会得到一个异常的地方。确切位置在哪里?所以能够明显截获此异常的,需要有人也有到的HttpServer,你可能有一个引用来传递自己周围。
修改强>:哦。在这种情况下,如果你不想杀死在它的HttpServer整个JVM,那么你就需要提供某种形式的IPC的环境,例如通过RMI一个命令信道可以从一个Java程序被调用(因此蚂蚁)。
另一个解决方案是让服务器监听一些“秘密”的cookie的查询,在那里你如打印/保存在启动该cookie,这样Ant脚本可以检索的cookie,你可以把火关查询到你的“秘密” URL在其服务器将正常退出本身。
我会去一个快速RMI的解决方案。
netstat -a
要找到具有端口开放的过程中的PID(假设你知道的端口),和
kill -9 $pid
终止进程。
不隶属于 StackOverflow