Jaxb 那里';没有为元素使用@XmlElementDecl的ObjectFactory

Jaxb 那里';没有为元素使用@XmlElementDecl的ObjectFactory,jaxb,spring-ws,xjc,Jaxb,Spring Ws,Xjc,我正在使用SpringWS实现我的web服务。 我在web服务中遇到以下错误 “对于元素测试,没有带有@XmlElementDecl的ObjectFactory” 测试正在使用@XmlElementRef 在创建jaxb上下文时,我使用了设置为包名的ContextPath 我做了以下几件事: 使用xjc解析从WSDL转换为POJO 我有多个WSDL,因此ObjectFactory被覆盖。所以我刚刚用WSDL重命名了objectfactory前缀。wsdl将有一个对象工厂等,所以我没有任何对象工厂

我正在使用SpringWS实现我的web服务。 我在web服务中遇到以下错误 “对于元素测试,没有带有@XmlElementDecl的ObjectFactory” 测试正在使用@XmlElementRef

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

我做了以下几件事:

  • 使用xjc解析从WSDL转换为POJO
  • 我有多个WSDL,因此ObjectFactory被覆盖。所以我刚刚用WSDL重命名了objectfactory前缀。wsdl将有一个对象工厂等,所以我没有任何对象工厂类
  • 我认为在查找@xmlementdecl时,它会查找“ObjectFactory”类,然后它就找不到它了,如果我将我的AObjectFactory重命名为ObjectFactory,这就行了

    我的问题是:

  • @XmlElementRef不能引用我创建的重命名对象工厂吗
  • @XmlElementRef能否以某种方式避免
  • 我们可以有多个对象工厂吗
  • 如果我们根本不创建ObjectFactory,@XmlElementRef和@XmlElementDecl是如何工作的
  • 任何帮助都会很好

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

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

    我有多个WSDL,因此ObjectFactory被覆盖

    通常,每个命名空间/包应该有一个
    ObjectFactory
    。如果
    ObjectFactory
    被过度使用,可能是您试图将所有内容强制为相同的包名

    所以我刚刚用WSDL重命名了objectfactory前缀。wsdl将具有 所以我没有任何ObjectFactory类

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

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

  • 谢谢你的回复。对于#1,我已经在jaxb.index中包含了所有@XmlRegistry文件。对于#2-我正在使用spring,那么我是否已经使用了缺少的内容?@user1630693-您的
    jaxb.index
    看起来像什么?当您尝试在Spring之外创建
    JAXBContext
    时会发生什么?