带有RSA和DS的Apache CXF ContainerRequestFilter

时间:2017-11-17 21:38:29

标签: osgi cxf apache-karaf declarative-services

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

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

1 个答案:

答案 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