在wildfly 11中的其他WAR中动态加载类

时间:2018-02-05 14:04:29

标签: java java-ee wildfly-11

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

我们在Wildfly 11中运行了一个任务引擎,它通过反射依赖于动态加载。不要说我们有一个抽象的基础"一切都在上课。它取决于使用简单的Class.forName()加载实现的数据库注册。对于日常工作,它运行顺利。 由于我们的引擎有不同的模块,我们已经使用jboss-deployment-structure.xml告诉Wildfly" Process"模块取决于"核心"模块等。

但是现在,我们需要使用"插件",因此我们的客户可以在另一个包中创建自己的实现,只需将它们注册到我们的数据库中。

问题是:如何告诉Wildfly,或类加载器或管理它的神性,在不使用.xml依赖文件的情况下在插件中加载类,因为它会创建一个" regretable&#34 ;循环依赖(插件已经声明它与Core包的依赖关系)

是否可以在没有实现硬更改的情况下(比如让插件init将自己声明为核心或其他东西)?我们有很多代码,目前这种重构是不可行的。

最诚挚的问候,

费尔南多·奥古斯托。

1 个答案:

答案 0 :(得分:0)

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