2014-07-11 3 views
0

소유권이없는 데이터베이스 시스템에 연결하는 데 사용되는 타사 jar 파일이 있습니다. 항아리는 실제로 이클립스 플러그인이라고 생각합니다. 해당 시스템의 Eclipse 기반 편집기의 lib 폴더 중 하나에서 가져 왔습니다.Karaf의 OSGI 번들로 타사 jar 파일을 가져 오는 데 문제가 있습니다.

어쨌든 Netbeans 7.4 및 Karaf 3.0.1을 사용하여이 jar의 기능을 제공하는 번들을 개발하려고합니다. jar 파일을 Karaf에 설치하려고하면 작동하지 않습니다. deploy 폴더에 넣으면 목록에 나타나지 않습니다. OSGI 번들로 인식하지 못합니다. Netbeans에서 새 OSGI Maven 번들을 만들고 종속 항목으로 jar를 추가했으며 Bundle-ClassPath, Export-Package을 비롯한 모든 방식의 음영 처리를 시도했습니다. 한때 나는 그것이 작동하고 있다고 생각했지만 Karaf는 Eclipse 요구 사항에 대한 불만을 나타 냈습니다.

Require-Bundle: org.eclipse.core.runtime 

을 그럼 내가 종속성을 충족의 토끼 구멍 아래로 시작 : 내가 더 파고했던 항아리와 제 3 자 항아리에 대한 매니페스트의 압축을 푼

이가있다. 내가 얻을 설치하려고 할 때 이제

<features xmlns="http://karaf.apache.org/xmlns/features/v1.0.0"> 
    <feature name='custom_deps' version='1.0'> 
     <bundle>mvn:org.eclipse.equinox/log/1.0.100-v20070226</bundle> 
     <bundle>mvn:org.eclipse/osgi/3.5.0.v20090520</bundle> 
     <bundle>mvn:org.eclipse.core/contenttype/3.2.100-v20070319</bundle> 
     <bundle>mvn:org.eclipse.core/jobs/3.3.0-v20070423</bundle> 
     <bundle>mvn:org.eclipse.core.runtime.compatibility/auth/3.2.100-v20070502</bundle> 
     <bundle>mvn:org.eclipse.equinox/app/1.3.100-v20130327-1442</bundle> 
     <bundle>mvn:org.eclipse.equinox/common/3.6.200-v20130402-1505</bundle> 
     <bundle>mvn:org.eclipse.equinox/preferences/3.5.100-v20130422-1538</bundle> 
     <bundle>mvn:org.eclipse.equinox/registry/3.5.301-v20130717-1549</bundle>  
     <bundle>mvn:org.eclipse.core/runtime/3.3.100-v20070530</bundle> 
    </feature> 
</features> 

: 받는다는 페이지를 기반으로 내가 함께이 features.xml 파일을 넣어 내가 펠릭스 대 춘분과 함께 할 수있는 뭔가가 있다고 생각

[email protected]()> feature:install custom_deps 
Error executing command: Could not start bundle mvn:org.eclipse/osgi/3.5.0.v2009 
0520 in feature(s) custom_deps-1.0: Activator start error in bundle org.eclips 
e.osgi [256]. 

? 난 그냥 기본 Karaf 설정을 사용하고 내장 Netbeans 메이븐 프로젝트를 사용하여 번들을 만들고 아직도 비교적 OSGI 세계에 새로운입니다. 대부분의 경우 번들을 실행하여 앱의 기본 모음을 만들었지 만이 번들은이 라이브러리를 사용할 수 있는지에 달려 있으며 작동시키기위한 방법을 찾기 위해 애 쓰고 있습니다. 항아리의 모든 링크 된 종속성을 해결할 수있는 방법이 있는지 궁금한 점이 있거나 일식에 의존하는 것이 무엇이든지 제거 할 수 있을까요? 내가 찾고있는 연결에 필요하지 않은 플러그인 관련 부품 일지 궁금하다.

어떤 아이디어 주셔서 감사합니다.

편집 :

항아리를 항아리 제 3 자에 대한 더 많은 정보를 추가는하지만 지금 소멸 공급 업체, 공급 업체에서 제공 한 것입니다. 나는 벤더의 세부 사항을 제공 할 수 있는지 여부를 확신 할 수 없으므로 여기서 특정 회사 정보를 가려 볼 것입니다. 따라서이 항아리의 이름은 "com.bigcompany.product.productbeans_4.3.1.jar"입니다. 단지의 전체 매니페스트는 다음과 같습니다

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: Productbeans Plug-in 
Bundle-SymbolicName: com.bigcompany.product.productbeans 
Bundle-Version: 4.3.1 
Bundle-Activator: com.bigcompany.product.productbeans.ProductbeansPlugin 
Bundle-Vendor: BIGCOMPANY 
Bundle-Localization: plugin 
Require-Bundle: org.eclipse.core.runtime 
Eclipse-AutoStart: true 
Export-Package: com.bigcompany.product.productbeans 

Karaf에서 춘분에 스위치는 상대적으로 고통 이었지만, Karaf에 항아리를 삭제하는 것은 아직도 여전히 목록에 표시되지 않았다. 항아리를 압축 해제하고 Require-Bundle 및 Eclipse-Autostart 줄을 제거하도록 매니페스트를 수정하고 재 포장 한 다음 설치를 시도했습니다.이 시점에서이 라이브러리를 원했던 번들은 여전히 ​​요구 사항이 누락되었다고 불평합니다. bigcompany.product.productbeans '.

거기에서 제 3 자 패키지를 가져 오려고 시도하는 내 번들을 다시 배포하려고 시도했는데 위에 기능 파일을 설치하려고하면에 누락 된 제약 조건이 있다고 불평합니다 - 기능에 번들 순서가 필요합니까? 파일?

궁극적으로 내가 원하는 것은 jar를 포함하거나 포함시키는 권위있는 방법입니다 (또는 .class 파일이 포함되어 있습니까?)을 필요로하는 묶음으로 묶어서 그냥 작동되게하려면? Embed-Dependency, Bundle-Classpath (문법이나 위치가 맞는지 확실하지는 않지만), Maven 음영 플러그인을 사용해 보았습니다. 내 번들이 제 3 자 패키지가 누락되었다고 말합니다. , 또는 그것은 그것이 종속 관계를 찾을 수 없다는 것을 알려주지 않는다면 말입니다. 내가 OSGI가 아닌 프로젝트를 가지고 있다면, maven 의존성은 일식 관련 의존성을 나열하거나 포함하지 않는다. 필요한 경우 내 POM 또는 다른 내용을 포함시킬 수 있습니다.

답변

1

기본적으로 Require-Bundle은 춘분 번들이 필요하다고 말합니다. 표준에 의한 Karaf는 Apache felix를 OSGi 런타임으로 사용합니다. 춘분은 런타임이기 때문에 단순히 펠릭스 안에 설치할 수 없습니다.

대신 펠릭스 대신 춘분을 사용하도록 카라프를 전환하십시오.

편집 등/config.properties 및 karaf.framework =

그런 다음 (첫번째 추가 종속성없이) 다시 번들을 배포하려고 춘분을 설정합니다.

+0

고마워요! 위의 게시물을 더 많은 정보로 업데이트했습니다. Equinox에 대한 변경은 비교적 쉽지만 (cxf http) 몇 가지 기능을 다시 설치해야했습니다. 하지만 타사 리소스를 찾지 못해서 내 번들을 실행하고 있습니다. 이 시점에서 필자는 제 3 자 항아리를 별도로 사용할 필요조차하지 않았습니다. 내 번들은 주변의 일종의 래퍼가 될 수 있습니다. 그래서 가장 좋은 번들에 종속 항아리를 완전히 삽입하는 방법이 있다면 ... 제 생각 에는요? 도와 주셔서 다시 한 번 감사드립니다! –

+1

maven 번들 플러그인을 사용하여 자신의 번들을 만드는 경우 종속성을 추가하는 것은 매우 간단합니다. "Private-Package :"설정에 임베디드 할 번들 패키지를 추가하기 만하면됩니다. 그런 다음 maven 번들 플러그인은 이러한 클래스를 자신의 번들 jar에 추가합니다. –