2012-08-09 2 views
0

하나의 OSGi 번들에서 생성 된 데이터 중 일부를 REST 인터페이스로 노출시키는 과정에서 다른 사람이 일반적인 http 요청으로 소비 할 수있다. 이렇게하려면 apache-cxf, JAX-RS 및 Jetty (테스트 목적으로 주로 사용)의 조합을 사용하고 있습니다.apache-cxf dosgi 이클립스 플러그인과 같은 편안한 서비스

내 전체 응용 프로그램은 두 가지 방법으로 배포됩니다

  • 코어 일 : OSGi 프레임 워크와 같은 최소한의 번들 세트를 실행합니다.
  • 전체 : Core +와 Eclipse 내에서 그래픽 방식으로 사용되는 플러그인 세트를 추가하면됩니다. 나는 전체 분포를 시작하려고하면

    Require-Bundle: cxf-dosgi-ri-singlebundle-distribution;bundle-version="1.3.1",org.eclipse.core.runtime, org.eclipse.osgi.services;bundle-version="3.3.0", org.mortbay.jetty.server;bundle-version="6.1.23", org.mortbay.jetty.util;bundle-version="6.1.23" 
    

    것은, 부두 서버가하지 않는 것 :

코어 실행 구성에 나는 아무 문제없이이 일을 할 수 있지만은 MANIFEST를 보라 따라서 RESTful 서비스가 제대로 작동하지 않습니다. 전체 배포판에는 더 많은 플러그인이 포함되어 있으며 주로 마법사, 전망 등과 관련이 있습니다. 이 문제의 뿌리는 어떻게 든 cxf-dosgi-ri-singlebundle- 배포 번들과 관련이 있으며 기본값 대신이 번들의 자동 시작을 true로 강제 설정하여 해결할 수 있습니다 (아래 이미지 참조) :

enter image description here

이것이 괜찮긴하지만 제 질문은 ... 왜 이런 일이 발생합니까? 두 번째이자 가장 중요한 점은 업데이트 사이트를 통해 전체 배포를 배포하므로 사용자가 다운로드하여 원근감을 열고 사용하기 시작할 수 있다는 것인데 이것이 최종 배포에 영향을 미칩니 까? 업데이트 사이트에서이 auto-start = apache-cxf 번들을 제어 할 수있는 방법이 있습니까?

희망은 내가 분명히 할 수 ...

고마워!

난 내 자신의 질문에 대답 좋아하지 않아,하지만 난 어떤 피드백을 받고하지하고있어 다른 어쩌면 사람이 같은 문제를 가지고 있기 때문에 ... 여기 간다

답변

0

나는 나의 편안한의 전체 디자인을 변경하기로 결정 번들, apache-cxf를 사용하지 않음으로써, 실제로 필요하지 않기 때문에. 필자가 원하는 것은 HttpRequests와 HttpResponses를 처리하기위한 임베디드 Jetty 서버와 javax 뿐이다. 따라서 제 3 자 라이브러리와의 의존성을 없애고 동시에 실행 문제를 활용합니다.

은 Eclipe 이러한 공식 사이트에서 아이디어를 얻었다 : 게다가

Embedding an HTTP server in Equinox

Writing a bundle-based server application은 좀 더 실제적인 튜토리얼은 여기에서 찾을 수 있습니다 :

OSGi as a Web Server application

Extending Eclipse: displaying HTML content from a bundled archive

깨달음에 대한 두 작가의 특별한 감사의 말 :).

관련 문제