2009-09-26 2 views
2

이것은 fusesource forumservicemmix forum에서 교차 게시되었습니다.Servicemix 4, DOSGi 및 Zookeeper

FUSE에서 DOSGi를 사용할 수 없습니다. 나는 FUSE 4.1.0.2에 사육사 발견과 함께 CXF의 DOSGi 1.1-SNAPSHOT을 얻으려고합니다. 저는 또한 Zookeepr 3.2.1을 사용하고 있습니다.

모든 것이 Felix 2.0.0에서 완벽하게 작동합니다. 방금 DOSGi Discovery 페이지의 지침을 따른 다음 Discovery Demo 번들을 설치하십시오. DOSGi의 경우 DSW에는 cxf-dosgi-ri-singlebundle-distribution-1.1-SNAPSHOT.jar을, zookeepr에는 cxf-dosgi-ri-discovery-singlebundle-distribution-1.1-SNAPSHOT.jar을 사용합니다. 그런 다음 하나의 시스템에서 샘플 서비스 impl으로 샘플 번들을 시작하면 사육사에서 노드 작성이 표시됩니다. 그런 다음 다른 컴퓨터에서 샘플 클라이언트를 시작하고 서비스 컴퓨터에서 출력을 봅니다. 훌륭하게 작동합니다. 일부 XSD는 찾을 수 없기 때문에 무시되는 XML 오류에 대한 경고가 있지만 아무 것도 영향을 미치지 않는 것으로 보입니다. 아, OSGi 개요집을 먼저 설치해야합니다.

내가 퓨즈로 이사 할 때 나는 그런 행운이 없다. OSGi compendium 번들에는 퓨즈가 함께 제공되므로 설치할 필요가 없습니다. dosgi-ri singlebundle과 dosgi-ri-discovery 단일 번들을 설치할 수 있어야하지만 작동하지 않습니다. dosgi-ri 싱글 번들은 servicemix와 모든 종류의 겹치는 번들을 가지고 있습니다. 8081 포트에 대해 오류가 발생합니까? 또는 osgi.http.service 매개 변수가 이미 사용 중인지 여부를 지정합니다. 분명히 dosgi-ri singlebundle은 pax webservice와 함께 제공됩니다. pax webservice는 servicemix와 함께 제공되는 servicemix http 서비스 번들과 동일한 속성을 읽습니다. 그 때 내가 cxf-dosgi-ri-multibundle-distribution-1.1-SNAPSHOT.zip으로 전환하고 원하는 부분을 차지하기 위해 압축을 풉니 다. 나는 dosgi-ri multibundle에서 dsw 번들을 꺼내 설치한다. jdom 의존성 때문에 운이 없다. 그런 다음 ri multibundle에 들어있는 jdom을 설치합니다. 이는 잘 작동합니다. 그런 다음 dsw로 돌아가서 설치하면 어딘가에 도착할 것입니다. 돌아가서 ri-discovery singlebundle을 설치할 시간. 내가 시작할 때 pax logging service classcastexception이 osgi logservice 또는 무엇인가로 캐스팅 될 수 없다는 것을 말합니다. 하지만 그냥 로깅 오류, 그 하단에 그것은 http://schemas.xmlsoap.org/soap/http에 대한 전송 클래스를 찾을 수 없습니다 말합니다. 좋아, 로깅이 엉망이되어 일부 전송 클래스가 누락되었습니다. 글쎄, 분명히 이것은 펠릭스에서 일했기 때문에 ri multibundle에서 충분히 설치하지 않았기 때문이다. 그래서 그 밖의 무엇이 필요합니다. 검사 할 때 cxf-minimal-bundle에 누락 된 클래스가있어 마지막 오류가 발생합니다. 그래서 설치합니다. 발견 번들을 시작하려고 시도하지만, 어떤 종류의 기괴함 예외로 끝납니다. Wtf. 코바를이 모든 용도로 사용하는 사람은 누구입니까? 그런 다음 다시 돌아가서 모든 것을 취소하고 ri와 ri의 단일 번들 배포판을 고수하려고합니다.하지만 servicemix http 서비스를 해제하십시오. 이는 servicemix를 망가 뜨리고 cxf jbi 구성 요소가 만족스럽지 않은 종속성을 갖기 때문에 다시 시작할 수 없습니다. 이상한. 나는 어쨌든 그걸 사용하지 않기 때문에 무시할 것이고, 샘플을 시작하려고 노력할 것입니다. 부두가 이미 사용 중이므로 부두가 시작할 수 없다고 말하기 때문에 샘플을 시작할 수 없습니다. 이미 servicemix http 서비스를 종료했기 때문에 이해가되지 않습니다. 그런 다음 부두를 다시 시작합니다. 공장? 아마도. 내 서비스가 등록되면 파이어 폭스를 사용하여 wsdl을 탐색 할 수 있지만 사육사는 등록하지 않을 수 있습니다. ri-discovery 번들을 종료하고 다시 시작하십시오.하지만 nullpointerexception을 얻습니다. 분명히 앞서 언급 한 오류들 중 하나 때문에 ri 발견이 실제로 시작되지 않았습니다. 그렇다면 나는 리 디스커버리 싱글 번들을 분해하고 내부를 꺼내려고 노력하기 시작했다. 그게 분명히 필요하기 때문에 작동하지 않았다. 비록 우리가 내부적으로 사용할 수있는 라이브러리가 없다고해도 말이다.

이야기 끝. 그것을 작동시킬 수 없습니다. 다른 사람이 일하도록 할 수 있습니까? SMX4에서 검색 샘플을 실행하고 싶습니다. 나는 그것의 번들 충돌 문제를 확신한다. 이것은 OSGi가 고쳐야 할 것이 아닌가? ??? 이것은 단지 당신이 어떤 항아리에 의존 하는지를 말하고 나에게 classpath를 설정하게하는 것보다 나쁘다. 적어도 그러면 나는 결국 그 물건을 달릴 것입니다.

나의 다음 단계는 ri-multibundle, dsw 및 jdom, ri-discovery singlebundle로 다시 시도하는 것입니다.그런 다음 비누 운송 문제를 해결하기 위해 cxf-fuse 번들 또는 cxf-rt 번들 중 일부를 사용해 보겠습니다.

메모 편집 : DOSGi 번들을 활성 상태로 표시하는 것 이상이 필요합니다. 그들은 당신이 그들을 통해 서비스를 노출하려고 할 때까지 실제로 많은 것을하지 않습니다. zookeeper 인스턴스와 서비스를 사용하는 다른 컴퓨터에서 서비스를 등록하는 여러 대의 컴퓨터를 확인해야합니다. DOSGi Discovery Sample을 실행하는 것과 같습니다.

나는 원래 cxf 번들의 일부를 제거하고 부두 서비스를 다시 시작한 다음 샘플 서비스를 시작하여 언급 한 최소한의 cxf 번들을 사용하여 분산 서비스 샘플을 SOAP 웹 서비스로 노출 할 수있었습니다. ... 또는 cxf 최소 번들을 설치 한 다음 서비스를 시작한 후 즉시 cxf 최소 번들을 제거한 후 부두를 다시 시작하여 ... 나는 그것이 순서라고 생각합니다. 이들 중 어느 것도 깨끗한 시작에서 작동하지 않으며 DOSGi를 작동시키기위한 절차로 서비스를 다시 시작해야하는 것은 좋지 않습니다. 나는 왜 설치 제거가 아무 것도 할 수 없다는 것을 알지 못한다. 주변에 유물이 남지 않아야한다.

답변

1

첫 번째 포인트는 CXF DOSGi 메가 번들을 살펴보면 벌거 벗은 OSGi 런타임에서의 빠른 n-dirty 해킹, 기본적으로 Equinox와 Felix에서 제공하는 최소한의 환경에서만 가능하다고 생각합니다. FUSE 나 Servicemix와 같은 더 풍부한 환경을위한 것이 아니기 때문에 번들과 플랫폼의 서비스에 충돌이 발생할 수 있습니다.

  • com.springsource.org.jdom-1.0.0.jar
  • CXF :

    나는 깔끔하게 시작 ServiceMix에 4.0을 얻을 수 (이 윈도우에) 다음 I 핫 배치했다 -bundle - 최소 - 2.2.1.jar
  • CXF-dosgi 리 발견 로컬-1.0.jar
  • cxf.dosgi-RI-dws.cxf-1.0.jar

은 Using Servicemix 콘솔에 나와 있습니다. 모든 묶음과 위의 모든 것이 Active 상태 (예상대로)에 있음을 확인했습니다. 필자는 서비스를 나열하고 2 개의 CXF DOSGi 번들이 서비스를 내보내므로 올바르게 작동하는 것으로 보입니다. 로그에 오류가보고되지 않았습니다.

OSGi에 얼마나 익숙합니까? Servicemix는 꽤 커 보이고 OSGi, Servicemix 및 CXF/DOSGi를 함께 배우는 것이 쉽지는 않을 것이라고 생각합니다.

제공된 콘솔은 OSGi 용으로 좋지 않으므로 web interface에 대한 Apache Felix 콘솔 번들을 설치하는 것이 좋습니다.

+0

원본 게시물에서 언급 한 샘플 검색 서비스와 같이 실제로 발견 된 서비스를 시작하지 않고 CXF를 통해 노출 될 것은 없으므로 실제로 cxf-bundle-minimal을 사용하지는 않습니다. –

+0

또한 발견 된 서비스를 시작할 수 있고 분산 된 검색없이 원본 충돌하는 항목을 제거하여 언급 한 cxf 번들과 함께 비누 웹 서비스로 노출 된 경우 실제로는 사육사와 통화하지 않습니다. 나열된 구성에 cxf-dosgi-ri-discovery-distributed-1.1-SNAPSHOT.jar 및 cxf-dosgi-ri-SNAPSHOT.jar가 포함 된 cxf-dosgi-ri-discovery-singlebundle- discovery-distributed-zookeeper-wrapper-1.1-SNAPSHOT.jar뿐만 아니라 자체적으로 중요한 서비스 집계를 제공합니다. –

+0

질문에 답하기 위해 필자는 펠릭스 (Felix)와 춘분 (Equinox) 및 OSGi 사양을 통해 OSGi 컨테이너 자체에 매우 만족하고 있습니다. 이러한 번들 충돌로 인해 나를 죽이는 경우가 있습니다. –