4

我正在寻找类似 ServiceLoader 的东西,但它不依赖于 SPI 文件,应该枚举所有服务实现,然后将其添加到某个类加载器的路径中,以便找到。

假设有一个应用程序,它具有接口和服务的一些实现。可以使用什么框架,允许您向应用程序添加一个新的 JAR,其中包含一些新的实现,并且它们可以自动添加到该应用程序内所有类加载器的类路径中?所有的类加载器在这里都非常重要,因为如果这是一个 NetBeans 模块应用程序,NetBeans 平台会产生奇怪的魔力,而且你永远不知道哪个线程使用哪个类加载器,使用哪个类路径等等......这也很棒,如果不需要重新启动应用程序即可找到新的 JAR,但这不是一个重要的要求。

我已经听说过 OSGi,但这似乎太大了,我只需要它的 1% 的功能。

感谢您的任何建议!

4

3 回答 3

7

最简单的解决方案是使用JSPF

更多的“企业”可能是使用 OSGi ......但在这种情况下,你将不得不看看iPOJO作为一个例子。对不起,我终于重新阅读了你的信息。我认为,与您所说的相反,OSGi 完全可以满足您的需求,因为它精确地允许服务加载和动态连接。

IoC 容器可以通过一些扩展提供这种功能(我认为至少可以使用 Guice 扩展)。

于 2010-07-07T12:26:50.100 回答
2

似乎您正在寻找 Netbeans 查找 API - 链接

于 2010-07-07T13:02:48.817 回答
0

一个较新的选择(这是一个老问题)可能是sezpoz

它与 JDK ServiceLoader 非常相似,因为它使用META-INF资源查找,只是资源是由注释处理器自动创建的。因此,它的注释非常繁重,并且通常以后期处理为代价更安全。哈德森/詹金斯使用它。

相信 Kohsuke 是第一个提出这个注解处理思路的人:http: //metainf-services.kohsuke.org/

于 2015-02-25T14:47:47.810 回答