Apache CXF ContainerRequestFilter с RSA и DS

Я переношу конечные точки CXF REST из схемы в декларативные службы, работающие на Apache Karaf. Использую Овен РСА и ДОСГИ. В старом коде используется ContainerRequestFilter (указанный в блупринте), но я не уверен, как его можно использовать с DS? Из [0] я вижу, что javax.servlet.Filter можно зарегистрировать, и мне интересно, каков правильный подход. Можно ли зарегистрировать ContainerRequestFilter с помощью аннотаций DS?

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


person Boban Petkovic    schedule 17.11.2017    source источник


Ответы (1)


Теперь это возможно с помощью доски JAX-RS из OSGi R7. Регистрация расширения JAX-RS так же просто, как сделать его службой OSGi, предоставляющей соответствующий интерфейс службы (в данном случае ContainerRequestFilter) и добавив свойство службы "osgi.jaxrs.extension=true".

Кроме того, используя функции R7 из Declarative Services и bnd 4.0.0, это свойство службы можно применить к компонентам Declarative Services с помощью новых метааннотаций ComponentPropertyType. Стандартная аннотация @JaxrsExtension является частью спецификации интерактивной доски JAX-RS.

Например:

@JaxrsResource
@Component
public class MyRequestFilter implements ContainerRequestFilter {

    // Implementation goes in here

}

Проект OSGi enRoute предоставляет другие примеры использования интерактивной доски JAX-RS в своих примерах.

person Tim Ward    schedule 04.05.2018