OSGI enRoute와 함께 Apache CXF를 사용하려고합니다. 비틀기는 cfg.xml 파일을 사용하지 않고 API를 통해 내 서비스 엔드 포인트를 회전시키는 것을 선호한다는 것입니다.API를 통해 새로운 CXF 버스 생성
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();
오전 데 문제가 이렇게 저를 생성/버스에게 해당 번들이 활성화 될 때마다 파괴 할 수 있도록, 각 OSGI 번들에 대한 뚜렷한 CXF 버스를 만드는/비활성화 : 다음은 그러한 예이다.
문제는 난 그냥 작성 및 CXF 버스를 파괴 API를 볼 수 없다는 것입니다 : 다음 Karaf 명령을 복제하는 것도 목표 일 것이다. 그리고 위에 나열된 Karaf 코드는 enRoute에서 작동하지 않는 것 같습니다.
번들 내에 버스를 생성하기 위해 cfg.xml 파일을 생성 할 수 있다고 가정하지만 주어진 별칭을 사용하여 버스를 가져 오는 API는 표시되지 않습니다. 응.
다음 링크 유망 보였지만, CXFNonSpringServlet의 서브 클래스에 적응 할 때 ... 나는 해당 CXF 버스를 얻을하지 않습니다도 내가 API를 통해 하나를 만들 보일 수있다 :
registering servlet in OSGi that receives parameters
그래서 제 질문은 ... OSGI 내에서 API를 통해 CXF 버스 (및 해당 서블릿)를 가져오고, 만들고, 파괴하는 데 성공한 사람이 있습니까?
덕분에, 랜디
나는 실제로 이와 같은 것을 시도했지만 성공하지 못했습니다. HTTPService 및/또는 CXF 번들이 활성화되기 전에 BusFactory.newInstance(). createBus()를 호출하면 새 버스가 '/ cxf'별칭과 자동으로 연결됩니다. 나중에 CXF 번들을 나중에로드하면이 코드는 새 번들을 작성하고이를 '/ cxf'별명과 연관시킵니다. 이로 인해 충돌이 발생합니다. 이 중복 된 별칭 예외를 피하는 접근법을 생각해 냈으며이 스레드에서 해당 솔루션을 문서화합니다. –