spark-java 2.6.0的文档提到"Embedded Jetty现在是完全可配置的“。
如何通过Spark 2.6.0配置关闭钩子?
我曾经重写过Jetty的Handler.doStop()方法,但我不清楚如何通过Spark框架实现相同的功能。
发布于 2017-07-11 13:43:16
下面是如何在sparkjava中覆盖Handler.doStop():
public class Main {
public static void main(String ...args) throws Exception {
EmbeddedServers.add(EmbeddedServers.Identifiers.JETTY, (Routes routeMatcher, StaticFilesConfiguration staticFilesConfiguration, boolean hasMultipleHandler) -> {
MatcherFilter matcherFilter = new MatcherFilter(routeMatcher, staticFilesConfiguration, false, hasMultipleHandler);
matcherFilter.init(null);
JettyHandler handler = new MyJettyHandler(matcherFilter);
return new EmbeddedJettyServer((int maxThreads, int minThreads, int threadTimeoutMillis) -> new Server(), handler);
});
get("/hello", (req, res) -> {
req.session(true);
return "Hello World";
});
}
}
class MyJettyHandler extends JettyHandler {
public MyJettyHandler(Filter filter) {
super(filter);
}
@Override
protected void doStop() throws Exception {
super.doStop();
// your magic happens here.
}
}初始化嵌入式jetty的代码取自sparkjava本身,因此我不会改变框架的行为。
发布于 2019-12-12 23:45:34
对于那些正在为新版本的Spark寻找答案的人,这里有一个参考:http://sparkjava.com/documentation#stopping-the-server
由于互联网上的URL并不是永远存在的,这里有一个问题:
通过调用
()方法停止服务器并清除所有路由。
以及我如何使用代码的示例:
public static void stopService(){
stop();
awaitStop();
}这个的用法是什么?例如,当您想要对服务进行重复测试时,清除它并重新初始化它,这就派上用场了。
https://stackoverflow.com/questions/45021534
复制相似问题