我有一个名为的活动包bundleA
,它实现了一个使用从另一个包调用Example
的方法调用的类。实现并通过加载(感谢SPI Fly)。在from中,我需要获取调用的捆绑包(不通过or因为我无法更改 API)。我可以得到's ,但不能得到调用包的:doSomething()
ExampleImpl
Example
ServiceLoader
ExampleImpl.doSomething()
bundleA
BundleWiring
doSomething()
Bundle
BundleContext
bundleA
BundleWiring
BundleWiring
Bundle bundleA = FrameworkUtil.getBundle(ExampleClass.class);
BundleWiring bundleWiringOfBundleA = bundle.adapt(BundleWiring.class);
如何获得调用包的BundleWiring
?
在我的特殊情况下,调用包总是一个 WAB,它恰好在Liferay Portal 7.0中运行。因此,如果有特定于 Liferay Portal 的解决方案,我会接受,但更通用的 OSGi 解决方案也可以。
请注意,我希望调用捆绑的捆绑接线而不是依赖于当前捆绑接线的每个捆绑的捆绑接线。我知道我可以获得依赖于当前捆绑布线的捆绑布线,但这不会帮助我专门获得调用捆绑:
Bundle bundleA = FrameworkUtil.getBundle(ExampleClass.class);
List<BundleWires> bundleWires =
bundleWiring.getProvidedWires(BundleRevision.PACKAGE_NAMESPACE);
bundleWires.get(0).getRequirerWiring();