CXF OSGi bundle - зарегистрировать фильтр для CXFServlet? - PullRequest
1 голос
/ 16 сентября 2011

Я получил пакет CXF OSGi, развернутый в контейнере karaf с несколькими конечными точками, каждая в своем собственном пакете.Конечные точки представляют собой смесь вкусов JAX-RS и JAX-WS.Я хотел бы включить некоторую защиту на конечных точках с помощью JOSSO, и для этого нужно зарегистрировать фильтр сервлетов.Очевидно, что при отсутствии web.xml для объявления фильтра мне нужно зарегистрировать их в реестре службы OSGi.

Я пытался использовать доску pax-web http для регистрации фильтра, но метод doFilterникогда не вызывается.Я заметил, что в реализации Distributed OSGI cxf есть условие для установки для свойства org.apache.cxf.httpservice.filter значения true в фильтре и указания фиктивной строки для servletNames, чтобы не перепутать доску pax-web.Есть ли что-то похожее для стандартного CXF (нераспределенного) комплекта OSGi, которое я могу сделать, чтобы зарегистрировать фильтр сервлета?

1 Ответ

0 голосов
/ 16 января 2012

После многих копаний я смог установить фильтр для сервлета CXF с помощью Felix + PAX Web.Хитрость заключается в том, чтобы зарегистрировать фильтр из пакета CXF (для каждого пакета есть отдельный http-контекст).

В моем коде я извлек контекст пакета, называемый getBundles (), обнаружил пакет cxf и получилконтекст пакета CXF.Затем я зарегистрировал фильтр в контексте пакета CXF.Сейчас я чувствую себя очень грязно, но это работает.

Я помню, что видел рекомендацию по созданию пакета fragement для конфигурации сервера Jetty PAX, это, вероятно, также будет работать для регистрации фильтра - однако я этого не сделалхотите создать еще один артефакт в нашем проекте в настоящее время.

...