说,我运行了一个Java应用程序,并且我已经提供了RESTful Web服务调用(通过Java Jersey)。首先,我是否正确,每个HTTP RESTful请求(或servlet请求)的调用都在与主线程不同的线程上运行?如果是这样,如果我提供一个RESTful调用来杀死应用程序,它怎么能到达主线程(由main()方法启动的那个)来杀死它并随后停止程序?
注意:我问这个的原因是我需要正常关闭主线程(和程序)。
答案 0 :(得分:1)
您的restful服务应该像其他任何请求一样处理关闭请求。
例如,如果您的应用是在线商店,则可能会调用processOrder
或getInventory
。这些调用可以访问您应用中的许多内容,对吗?好吧,只需拨打一个名为shutdown
的新电话。此调用将关闭未来调用的大门,等待现有调用完成,将内存中的信息保存到DB以及其他安全关闭过程。
这真的只是另一个电话。我不会过于担心“停止主要方法” - 从逻辑行为而不是技术行为来考虑。
对于泽西岛来说,你正在寻找client.destroy();
。
答案 1 :(得分:0)
答案 2 :(得分:0)
泽西岛服务是
的一个实例com.sun.net.httpserver.HttpServer`
...您通过调用
创建的com.sun.jersey.api.container.httpserver.HttpServerFactory.create(...)
假设您可以获取HttpServer实例,可以通过调用stop(int)
方法来关闭该服务。您没有理由不能通过其中一个请求处理程序执行此操作。