gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:43:58 25 4
gpt4 key购买 nike

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

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

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

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

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

最好的祝福,

费尔南多·奥古斯托。

最佳答案

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

关于java - 在wildfly 11内的其他WAR中动态加载类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48624337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com