【发布时间】:2018-09-21 21:03:58
【问题描述】:
短版:如何使用 Felix 注释对 sling servlet 使用基于多个选择器的 servlet 强制最匹配?
我在 OSGI 包中定义了一些 servlet。我正在使用 org.apache.felix.scr.annotations.sling.SlingServlet 注释。
@SlingServlet(
methods={GET},
selectors {"v1"}
...
)
public class MyServlet extends SlingAllMethodsServlet {}
...
@SlingServlet(
methods={GET},
selectors {"v1","special"}
...
)
public class MySpecialServlet extends MyServlet {}
我的问题是我找不到强制 MySpecialServlet 仅在两个选择器都存在时处理请求的方法。
GET http://localhost/my/resource.v1.special.json
有时它只会处理对 v1 选择器的请求。
GET http://localhost/my/resource.v1.json
似乎在使用通过 felix webconsole 发布新 jar 之后,如果我在任何其他资源之前请求双选择器 resource.v1.special.json,那么 MySpecialServlet 还将继续处理仅 v1 请求。
有没有一种方法可以强制更通用的 servlet 使用当前注释来处理更通用的选择器列表?我错过了一些部分注释吗?我相信这个系统可能使用的是较旧的注释。也许值得迁移?对于我被要求做的这个小任务,我尽量不要太打扰。
如果我将这些技术的某些部分混为一谈,请耐心等待。我刚刚解决了这个问题,我还在整理它。请更正任何不一致的术语。
【问题讨论】:
标签: annotations apache-felix sling