我在这里再次寻求启发。情况如下:
我们在Wildfly 11中运行了一个任务引擎,它通过反射依赖于动态加载。不要说我们有一个抽象的基础"一切都在上课。它取决于使用简单的Class.forName()加载实现的数据库注册。对于日常工作,它运行顺利。 由于我们的引擎有不同的模块,我们已经使用jboss-deployment-structure.xml告诉Wildfly" Process"模块取决于"核心"模块等。
但是现在,我们需要使用"插件",因此我们的客户可以在另一个包中创建自己的实现,只需将它们注册到我们的数据库中。
问题是:如何告诉Wildfly,或类加载器或管理它的神性,在不使用.xml依赖文件的情况下在插件中加载类,因为它会创建一个" regretable&#34 ;循环依赖(插件已经声明它与Core包的依赖关系)
是否可以在没有实现硬更改的情况下(比如让插件init将自己声明为核心或其他东西)?我们有很多代码,目前这种重构是不可行的。
最诚挚的问候,
费尔南多·奥古斯托。答案 0 :(得分:0)
如果使用reflection.org库在同一个EAR / WAR中将核心应用程序与核心应用程序一起部署,则应该足以通过某些批注的实现接口来扫描插件。使用CDI Instance更加容易。 如果插件位于单独的部署单元中,则可能需要插件为带有@Remote接口的JEE bean,并搜索此类bean的JNDI(InitialContext)。