Я пытаюсь использовать Apache CXF с OSGI enRoute. Твист заключается в том, что я бы предпочел не использовать файлы cfg.xml и вместо этого расширять конечные точки службы через API. Ниже приводится такой пример:Создайте новую шину CXF через API
InvolvedPartySoap12EndpointImpl involvedPartyServiceImpl = new InvolvedPartySoap12EndpointImpl();
ServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
svrFactory.setServiceClass(InvolvedPartyPortType.class);
svrFactory.setAddress("/bin/InvolvedParty");
svrFactory.setBus(bus);
svrFactory.setServiceBean(involvedPartyServiceImpl);
_server = svrFactory.create();
вопрос, который я имею создает отдельную шину CXF для каждого OSGI пучка, что позволяет мне создавать/уничтожить автобус каждый раз, когда соответствующий пакет активируется/деактивируется. Репликация следующих команд Karaf также будет целью:
Проблема заключается в том, что я просто не вижу API-интерфейсов для создания и уничтожения CXF Bus. И код Karaf, указанный выше, не работает для enRoute.
Я полагаю, что можно создать файл cfg.xml в комплекте для создания шины, но тогда я не вижу API для извлечения шины с заданным псевдонимом. Тьфу.
Следующая ссылка казалось многообещающим, но при адаптации к подклассу CXFNonSpringServlet ... Я не получить соответствующий CXF автобус, и я не могу показаться, чтобы создать с помощью API:
registering servlet in OSGi that receives parameters
Итак, мой вопрос: кто-нибудь был успешным в сборе, создании и уничтожении автобусов CXF (и соответствующих сервлетов) через API в OSGI?
Спасибо, Рэнди
Я действительно пробовал что-то подобное, но безуспешно. Кажется, что вызов функции BusFactory.newInstance(). CreateBus() до активации пакетов HTTPService и/или CXF приводит к тому, что новая шина автоматически связана с псевдонимом '/ cxf'. Когда пакеты CXF впоследствии загружаются позднее, этот код также создает новый пакет и связывает его с псевдонимом '/ cxf'. Это вызывает конфликт. Я придумал подход, который позволяет избежать этого дублирующего псевдонима и будет документировать это решение в этом потоке. –