我需要提供自定义的ClassLoader吗?考虑清楚,这似乎不是正确的方法,因为在类加载器中,一个人不知道所需的版本。
发布于 2010-01-28 06:37:51
鉴于加载机制本质上与URL一起工作,我建议尝试自定义URL处理程序。从逻辑上讲,在使用此处理程序加载任何包之前,您需要加载并激活它,否则我认为它应该可以工作。
请参阅R4 OSGi核心规范中的"URL处理程序服务规范“。
Glassfish is using this approach to install webapp bundles btw.
发布于 2009-12-05 18:50:12
一个简单的解决方案是创建您自己的引导包,它将从数据库(或其他位置)提供所有其他包。OSGi允许您从任意的InputStream安装包,因此将其插入到您想要的任何源(例如JDBC)中应该是相当容易的。
更多详情请参见BundleContext.installBundle()方法。
您不应该寻找“回调”,框架将通过“回调”通知您“何时需要加载所需的依赖项”,因为自动依赖项管理(ala Maven)不是核心OSGi功能的一部分(尽管可以通过使用OBR等服务来实现)。
发布于 2009-12-01 20:17:53
看看PAX URL项目:http://wiki.ops4j.org/display/paxurl/Documentation
这演示了加载OSGi包的关注点与它的存储方式的分离。从理论上讲,我没有看到使用数据库作为捆绑存储的任何主要障碍,尽管我也没有看到任何明显的优势。
对于捆绑包版本,您需要一些机制来确定要加载哪些捆绑包(和版本)。您可以将包与版本信息一起存储在数据库中,否则如何存储同一包的不同版本?
https://stackoverflow.com/questions/1817214
复制相似问题