2012-08-11 4 views
7

패키지를 내보내는 번들은 어떻게 찾습니까?패키지를 내보내는 OSGI 번들을 찾으십시오.

필자는 felix를 사용하고 있는데 "com.test"와 같은 문자열이 있는데, 어떤 패키지가 해당 패키지를 내 보냈는지 어떻게 알 수 있습니까?

PackageAdmin은 더 이상 사용되지 않으므로 사용하고 싶지 않으며 각 번들에 대해 Export-Package 헤더를 가져 와서 구문 분석하려고하지 않습니다.

아이디어가 있으십니까?

답변

11

Gogo 쉘이 아닌 프로그래밍 방식으로이 작업을 수행하려는 것 같습니다. 적어도 질문에 대한 표현으로 가정합니다.

주어진 패키지를 내보내는 번들이 여러 개있을 수 있고 그 패키지가 여러 번들에 의해 여러 번들에서 사용될 수 있으므로 "특정 번들"이 주어진 패키지를 내 보내야한다고 말하는 것은 실제 방법이 아닙니다. 특정 번들이 있고 어떤 번들이 패키지 com.test을 제공하는지 알고 싶다면 가져 오는 번들의 배선 Bundle.adapt(BundleWiring.class)을 가져온 다음 BundleWiring.getRequiredWires()을 사용하여 모든 번들의 종속성을 제공받을 수 있습니다.

는 는

당신은 당신이 원하는 패키지 osgi.wiring.package 네임 스페이스의 와이어를 찾을 필요가 거기에서, 그 전선의 제공자는 관심있는 번들의 BundleRevisionBundleCapability 될 것입니다.의

+0

을이 일을 원한다고해야 이것은 기본적으로 내가 찾고있는 것입니다. 모든 번들을 거쳐야하는 것은 부끄러운 일입니다. 프레임 워크에서 다음 번 패키지가 만족 스럽다는 것을 알 수있는 메서드가 필요했습니다. 어쨌든 이것이 의존성을 해결해야 할 때 프레임 워크가 배후에서 무엇을하고 있는지를 감안할 때. 하지만 어쨌든, 답변 주셔서 감사합니다. – Boomah

2

시도해 보셨습니까? 수출 | grep com.test?

+0

죄송합니다, 제가 프로그래밍 – Boomah

3

최신 버전 Apache Felix OSGi 콘솔에는 주어진 패키지 또는 클래스를 내보내는 번들을 나열하는 "종속성 찾기"플러그인이 있습니다. http://www.6dlabs.com/blog/dklco/2012-05-04/new-cq-55-dependency-finder에 일부 스크린 샷이 있습니다 (CQ5는 언급하지만 플러그인은 이에 의존하지 않습니다).

관리자 수준에서 유용합니다, 당신은 코드에서 그것을 알아 내야 경우, 그 플러그인의 소스 코드를 살펴 가지고 볼 수

https://issues.apache.org/jira/browse/FELIX-3045

관련 문제