Jetty 9(嵌入式):在运行时添加处理程序 [英] Jetty 9 (embedded): Adding handlers during runtime
问题描述
有没有办法向正在运行的嵌入式Jetty实例添加处理程序?我们已将旧的基于Jetty 6的项目迁移到Jetty 9,我们需要为插件系统添加和删除动态处理程序...
Is there any way to add handlers to a running embedded Jetty instance? We have migrated an old Jetty 6 based project to Jetty 9 and we need for our plugin system the possibility add and remove dynamically handlers...
请参阅下面的示例.. 。
See the example below...
Server server = new Server();
[...]
server.start();
[...]
Handler[] existingHandler = server.getHandlers();
// There is no more
server.addHandler(newHandler);
// only this you can do, but only if the server is stopped
server.setHandler(newHandler)
注意: newHandler
是 HandlerCollection
...
推荐答案
使用Jetty 9.1.0.v20131115,您可以使用 mutableWhenRunning
上的标志HandlerCollection
构造函数...
With Jetty 9.1.0.v20131115 you can use the mutableWhenRunning
flag on HandlerCollection
constructor ...
HandlerCollection coll = new HandlerCollection(true);
这将忽略 isStarted()
测试在 .setHandlers(Handlers [])
和 .addHandler(处理程序)
来电。
This will ignore the isStarted()
tests on the collection itself during .setHandlers(Handlers[])
and .addHandler(Handler)
calls.
此行为仅适用于 HandlerCollection
本身,您可以添加单个处理程序,或设置整个处理程序树而不考虑 LifeCycle
的 HandlerCollection
。
This behavior is only available for the HandlerCollection
itself, you can add individual handlers, or set the entire handler tree without regards to the LifeCycle
of the HandlerCollection
.
例如:
Server server = new Server(8080);
HandlerCollection myhandlers = new HandlerCollection(true);
server.setHandler(myhandlers);
// add some initial handlers
myhandlers.setHandlers(new Handlers[] { helloHandler, indexHandler });
// start server
server.start();
// ... at some point later, during runtime
FooHandler fooHandler = new FooHandler();
fooHandler.start();
myhandlers.addHandler(fooHandler);
BarHandler barHandler = new BarHandler();
barHandler.start();
myhandlers.addHandler(barHandler);
这篇关于Jetty 9(嵌入式):在运行时添加处理程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!