Apache CXF ContainerRequestFilter with RSA and DS



我正在将CXF REST端点从蓝图迁移到在Apache Karaf上运行的声明性服务。我使用Aries RSA和DOSGI。在旧代码中使用了容器请求过滤器(在蓝图中指定(,但我不确定它如何与 DS 一起使用?从 [0] 我可以看到 javax.servlet.Filter 可以注册,我想知道什么是正确的方法。是否可以使用 DS 注释注册 ContainerRequestFilter?

[0] http://cxf.apache.org/distributed-osgi-reference.html

现在可以使用OSGi R7的JAX-RS白板来实现这一点。注册 JAX-RS 扩展就像使其成为提供相关服务接口的 OSGi 服务一样简单 - 在本例中ContainerRequestFilter并添加服务属性 "osgi.jaxrs.extension=true"。

通过使用声明性服务和 bnd 4.0.0 中的 R7 功能,可以使用新的 ComponentPropertyType 元注释将此服务属性应用于声明性服务组件。标准注释@JaxrsExtension是 JAX-RS 白板规范的一部分。

例如:

@JaxrsResource
@Component
public class MyRequestFilter implements ContainerRequestFilter {
    // Implementation goes in here
}

OSGi enRoute 项目在其示例中提供了使用 JAX-RS 白板的其他示例