嵌入在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

终止进程。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top