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



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

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

你知道我怎样才能找到带注释的类吗?

我想我必须扫描jar文件的.class资源

Enumeration<?> classes = bundle.findEntries("/", "*.class", true)

并加载Bundle.loadClass(...)。你认为这种方法会有性能问题吗?

使用Bundle.findEntries搜索bundle并不会搜索bundle - classpath。您需要使用新的BundleWiring.listResources api

看看http://sourceforge.net/projects/extcos/;虽然它的重点是组件扫描,但我认为它可能能够涵盖您的用例。注意,注释在JAXB中是可选的——也就是说,JAXB可以在不加注释的情况下使用类。

我会看一下反射项目。它的收集预先扫描的元数据功能也很有用。

最新更新