代码之家  ›  专栏  ›  技术社区  ›  m_pGladiator

在Java中,作为Service Load的替代品还有什么用?

  •  4
  • m_pGladiator  · 技术社区  · 16 年前

    我在寻找类似于service loader的东西,但是它不依赖于SPI文件,在那里所有的服务实现都应该被枚举,然后添加到某个类加载程序的路径中,以便找到。

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

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

    谢谢你的建议!

    3 回复  |  直到 8 年前
        1
  •  7
  •   Andrii Abramov Mk.Sl.    8 年前

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

    更多的“企业”可以是使用OSGi…但是那样的话,你得看看 iPOJO 作为一个例子。对不起,我终于重新阅读了你的留言。我认为,与您所说的相反,OSGi正是为您的需要而定义的,因为它精确地允许服务加载和动态连接。

    IOC容器可能会提供一些扩展功能(我认为至少可以使用guice扩展)。

        2
  •  2
  •   Script Runner    16 年前

    似乎您正在寻找NetBeans查找API - Link

        3
  •  0
  •   Adam Gent    11 年前

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

    它非常类似于JDK ServiceLoader,因为它使用 META-INF 资源查找,除非资源由注释处理器自动创建。因此,它的注释很重,而且通常以后期处理为代价,更安全。它由哈德逊/詹金斯使用。

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