我的应用程序有几个包,它们包含JAXB注释类和服务包,它负责创建JAXBContext
。
服务包注册BundleListener
并捕获生命周期事件,但问题是我不知道如何从org.osgi.framework.Bundle
对象中检索带注释的类。将类添加到MANIFEST.MF
和Bundle.loadClass(..)
中的条目将解决我的问题,但通过注释查找类似乎对我来说是更明确的解决方案。
您是否知道我如何找到带注释的课程?
我认为我必须使用
扫描jar
资源.class
资源
Enumeration<?> classes = bundle.findEntries("/", "*.class", true)
并使用Bundle.loadClass(...)
加载它们。您是否认为这种方法存在性能问题?
答案 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功能也很有用。