如何在OSGi包中找到带注释的类

时间:2011-12-08 07:20:26

标签: java jaxb osgi

我的应用程序有几个包,它们包含JAXB注释类和服务包,它负责创建JAXBContext

服务包注册BundleListener并捕获生命周期事件,但问题是我不知道如何从org.osgi.framework.Bundle对象中检索带注释的类。将类添加到MANIFEST.MFBundle.loadClass(..)中的条目将解决我的问题,但通过注释查找类似乎对我来说是更明确的解决方案。

您是否知道我如何找到带注释的课程?

我认为我必须使用

扫描jar资源.class资源
Enumeration<?> classes = bundle.findEntries("/", "*.class", true)

并使用Bundle.loadClass(...)加载它们。您是否认为这种方法存在性能问题?

3 个答案:

答案 0 :(得分:6)

使用Bundle.findEntries搜索包不会搜索Bundle-Classpath。您需要使用新的BundleWiring.listResources api。

答案 1 :(得分:0)

看看http://sourceforge.net/projects/extcos/;虽然它的重点是组件扫描,但我认为它可以涵盖您的用例。请注意,注释在JAXB中是可选的 - 也就是说,JAXB可以使用类而无需注释。

答案 2 :(得分:0)

我会看一下reflections project。它的collect pre scanned metadata功能也很有用。