我将CXF REST端点从蓝图迁移到在Apache Karaf上运行的声明式服务。我使用Aries RSA和DOSGI。在旧代码中使用了ContainerRequestFilter(在蓝图中指定),但我不确定它如何与DS一起使用?从[0]我可以看到javax.servlet.Filter可以注册,我想知道什么是正确的方法。是否可以使用DS注释注册ContainerRequestFilter?
答案 0 :(得分:1)
现在可以使用OSGi R7的JAX-RS白板。 Registering a JAX-RS extension就像使它成为提供相关服务接口的OSGi服务一样简单 - 在这种情况下ContainerRequestFilter
并添加服务属性" osgi.jaxrs.extension = true" 。
通过使用Declarative Services和bnd 4.0.0中的R7功能,可以使用新的ComponentPropertyType元注释将此服务属性应用于Declarative Services组件。标准注释@JaxrsExtension
是JAX-RS白板规范的一部分。
例如:
@JaxrsResource
@Component
public class MyRequestFilter implements ContainerRequestFilter {
// Implementation goes in here
}
OSGi enRoute项目提供了使用JAX-RS白板的其他示例in its examples