gpt4 book ai didi

java - 使用 WildFly 中另一个模块的 JAXBContext 进行解码

转载 作者:行者123 更新时间:2023-11-30 03:14:20 25 4
gpt4 key购买 nike

WildFly 8.2.1。

我在modules/system/layers/base中有一个“通用”模块。

我还有一个 EAR,里面有 EJB-JAR在这个 EAR 中,我有 jboss-deployment-struct.xml 依赖于“common”模块。它工作正常,我可以使用该模块中的类。

但是,当我尝试在该模块内的包上构造 JAXBContext 并尝试将某些 xml 解码为对象时,我得到了

unexpected element (uri:"{my namespace}", local:"{my local name}"). Expected elements are (none)

如果我将这些类移动到 EJB-JAR 中(全部在一个模块中),则解码工作正常。

所以这是来自模块分离的东西。

我尝试从 JAXBContext 对象打印 .toString()

只有一个模块:所有带注释的类都在那里。

有两个模块:只有指定包中的 ObjectFactory 类。

如果我显式地将类添加到 JAXBContext 中,我可以从 .toString() 中看到所有需要的类,但解码仍然无法进行。我得到空对象。

可能是什么?谢谢。

最佳答案

我找到了解决方案。

但我不完全明白问题是什么:) 这是类似 OSGi 的基础设施中的模块分离、类加载和类隔离的问题。

要解决这个问题,必须在 module.xml 中将“javax.xml.bind.api”的依赖项添加到“common”模块,如下所示:

<?xml version='1.0' encoding='UTF-8'?>
<module xmlns="urn:jboss:module:1.3" name="{module name}">
<resources>
<resource-root path="."/>
<resource-root path="common-types-1.0.jar"/>
</resources>
<dependencies>
<module name="javax.xml.bind.api"/>
</dependencies>
</module>

似乎当该模块依赖于某些部署时,在该部署中提供 javax.xml.bind.api 不足以使用公共(public)模块中的那些类创建 JAXBContext。它也需要添加到公共(public)模块中。

关于java - 使用 WildFly 中另一个模块的 JAXBContext 进行解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32986939/

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