spark-java 2.6.0的文档提到“嵌入式Jetty现在是完全可配置的”。
如何通过Spark 2.6.0配置关闭挂钩?
我过去已经覆盖了Jetty的Handler.doStop()方法,但我不清楚如何通过Spark框架完成等效的事情。
答案 0 :(得分:1)
这里是你如何覆盖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本身,因此我不会改变框架的行为。
答案 1 :(得分:0)
对于正在寻找答案的较新版本的Spark的人们,这里有一个参考:http://sparkjava.com/documentation#stopping-the-server
因为互联网上的URL永远不会存在,所以这里是qoute:
通过调用stop()方法,服务器将停止并清除所有路由。
以及我如何使用代码的示例:
public static void stopService(){
stop();
awaitStop();
}
这有什么用?例如,当您想对服务进行重复测试以将其清除并重新初始化时,便会派上用场,