【发布时间】:2019-12-12 23:45:34
【问题描述】:
spark-java 2.6.0 的文档提到“Embedded Jetty 现在是完全可配置的”。
如何通过 Spark 2.6.0 配置关闭挂钩?
我过去重写了 Jetty 的 Handler.doStop() 方法,但我不清楚如何通过 Spark 框架完成等效的操作。
【问题讨论】:
标签: spark-java
spark-java 2.6.0 的文档提到“Embedded Jetty 现在是完全可配置的”。
如何通过 Spark 2.6.0 配置关闭挂钩?
我过去重写了 Jetty 的 Handler.doStop() 方法,但我不清楚如何通过 Spark 框架完成等效的操作。
【问题讨论】:
标签: spark-java
这是在 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.
}
}
我初始化嵌入式码头的代码取自 sparkjava 本身,所以我不会改变框架的行为。
【讨论】:
对于正在为较新版本的 Spark 寻找答案的人,这里有一个参考:http://sparkjava.com/documentation#stopping-the-server
由于互联网上的 URL 不会永远存在,这里是 qoute:
通过调用 stop() 方法停止服务器并清除所有路由。
以及我如何使用代码的示例:
public static void stopService(){
stop();
awaitStop();
}
这个有什么用?例如,如果您想对服务进行重复测试,清除它并重新初始化它,那么这会派上用场,
【讨论】: