我正在尝试构建一个包含 MXBean 的 sar 存档并将其部署在 JBoss 7 中。
直到最近,我在 MXBean 类中引用其他库中的类时遇到问题,因为无论我将它们放在 SAR 存档的哪个位置,JBoss 都不会加载这些库。
我发现可以通过 META-INF 中的 jboss-deployment-structure.xml 文件配置 SAR 的类路径。我的这个文件的版本如下所示:
<jboss-deployment-structure>
<deployment>
<resources>
<resource-root path="management.api.jar" />
</resources>
</deployment>
现在加载了“management.api.jar”中的类。
我现在面临的问题是:如果 MXBean 的接口存储在 management.api.jar 并且实现它的类直接在 SAR 归档中,那么,当 JBoss 读取 jboss-service.xml 并尝试要创建 mxbean,它会产生一个指向接口的 ClassNotFoundException(即在 management.api.jar 中)。因此,尽管来自外部 jar 的类加载正常(我通过实际调用一个从 jar 引用类的方法来测试它并且它工作),似乎当 JBoss 注册 bean 时,它并没有通过整个类路径在 jboss-deployment-structure.xml 中定义。
我目前陷入困境,我怀疑这是 JBoss 处理类加载方式中的一个错误。如果有人知道解决此问题的方法(除了将接口从 jar 中取出并将其直接放入 SAR 存档中,因为这会破坏整个“api”的想法)请告诉我。
谢谢!