【问题标题】:There's no ObjectFactory with an @XmlElementDecl for the element没有带有 @XmlElementDecl 元素的 ObjectFactory
【发布时间】:2015-01-06 14:17:19
【问题描述】:

我正在使用 spring ws 来实现我的 Web 服务。 我在 Web 服务中收到以下错误 “没有用于元素测试的带有 @XmlElementDecl 的 ObjectFactory” 测试有一个@XmlElementRef。

在创建 jaxb 上下文时,我使用 ContextPath 设置为包名称。

我做了以下事情:

  1. 使用 xjc 解析将 WSDL 转换为 pojos。
  2. 我有多个 WSDL,所以 ObjectFactory 被覆盖了。所以我只是用 WSDL 重命名了 objectfactory 前缀。 A.wsdl 将有 AObjectFactory 等。所以我没有任何 ObjectFactory 类。

我认为在寻找 @XmlElementDecl 时它会寻找“ObjectFactory”类然后它找不到它,因为如果我将我的 AObjectFactory 重命名为 ObjectFactory 这可行。

我的问题是:

  1. @XmlElementRef 不能引用我创建的重命名对象工厂吗?
  2. 可以以某种方式避免@XmlElementRef 吗?
  3. 我们可以有多个 ObjectFactories 吗?
  4. 如果我们根本不创建 ObjectFactories,@XmlElementRef 和 @XmlElementDecl 是如何工作的。

任何帮助都会很棒。

【问题讨论】:

    标签: jaxb spring-ws xjc


    【解决方案1】:

    在创建 jaxb 上下文时,我使用 ContextPath 设置为 包名。

    当您通过上下文路径创建JAXBContext 时,JAXB 实现将寻找一个名为ObjectFactory 并带有@XmlRegistry 注释的类。

    我有多个 WSDL,所以 ObjectFactory 被覆盖了。

    通常每个命名空间/包应该有一个ObjectFactory。如果ObjectFactory 被覆盖,也许您正试图将所有内容强制使用相同的包名。

    所以我只是用 WSDL 重命名了 objectfactory 前缀。 A.wsdl 将有 AObjectFactory 等。所以我没有任何 ObjectFactory 类。

    当使用@XmlRegistry 注释的类被称为ObjectFactory 以外的其他名称时,您需要:

    1. 在与域模型相同的包中包含一个名为 jaxb.index 的文本文件,该文件包含该包中所有类的短名称,并带有 @XmlRegistry 注释。
    2. 引导生成的带有@XmlRegistry 注释的类的JAXBContext

    【讨论】:

    • 感谢您的回复。对于 #1 - 我已将所有 @XmlRegistry 文件包含在 jaxb.in​​dex 中。对于 #2 - 我使用的是 spring,所以使用了 我错过了什么吗?
    • @user1630693 - 你的jaxb.index 是什么样的?另外,当您尝试在 Spring 之外创建 JAXBContext 时会发生什么?
    猜你喜欢
    • 1970-01-01
    • 2014-08-08
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 2013-02-04
    相关资源
    最近更新 更多