我使用Guice在我的Web应用程序中路由请求,并且我想模块化一些我将要处理的URL模式的路由。理想情况下,我希望能够做这样的事情在我ServletModule
:使用Guice servlets路由子路径
delegate("/foo/bar/*").to(SomeOtherServletModule.class);
// in SomeOtherServletModule.configureServlets:
serve("/foo/bar/quux").with(Quux.class);
甚至更好:
delegatePrefix("/foo/bar/").to(SomeOtherServletModule.class);
// in SomeOtherServletModule.configureServlets:
serve("/quux").with(Quux.class); // prefix removed
这是可能的吉斯?看起来Guice试图让ServletModules安装的绑定成为一个单例,而这又被存储在谁知道的地方GuiceServletContextListener
被GuiceFilter
使用,但是我想解除这个单例,这样我就可以像委托一样这不是将所有东西都紧紧地绑定在一个函数中。
有趣的评论。不过,我认为这不会是一个巨大的问题 - 人们可以认为它大致相当于将所有请求代理到另一个Web服务器根目录的路径下。尽管任意模块在同一个servlet容器中进行子派生确实可能会造成混淆,但即使这意味着子模块将不得不声明支持这种使用方法,仍然可以通过某种方式实现此目的。但我想这属于这种情况下的功能请求:) – bdonlan