1

在这里,我再次寻求启蒙。情况如下:

我们有一个在 Wildfly 11 中运行的任务引擎,它在很大程度上依赖于通过反射进行动态加载。不需要说我们对所有东西都有一个抽象的“基”类。它依赖于使用简单 Class.forName() 加载实现的数据库注册。对于平时的工作,它运行平稳。由于我们的引擎有不同的模块,我们已经使用 jboss-deployment-structure.xml 来告诉 Wildfly“Process”模块依赖于“Core”模块等等。

但是现在,我们需要使用“插件”,这样我们的客户就可以在另一个包中创建自己的实现,并将它们简单地注册到我们的数据库中。

问题是:我如何告诉 Wildfly、类加载器或管理它的神在不使用 .xml 依赖文件的情况下在插件中加载类,因为它会创建一个“令人遗憾的”循环依赖(插件已经声明它是对 Core 包的依赖项)

是否有可能在实现中不进行硬更改(例如使插件初始化以将自己声明为核心或其他东西)?我们有很多代码,目前这种重构是不可行的。

此致,

费尔南多·奥古斯托。

4

1 回答 1

0

如果您将插件与核心应用程序一起部署在同一个 EAR/WAR 中,使用反射.org库应该足以扫描插件,或者通过一些注释的实现接口。使用 CDI Instance更加容易。如果插件位于单独的部署单元中,则可能需要插件是具有 @Remote 接口的 JEE bean,并在 JNDI(InitialContext) 中搜索此类 bean。

于 2018-02-05T14:45:33.087 回答