gpt4 book ai didi

java - 在 jax-ws Web 服务中子类化 ObjectFactory 的问题

转载 作者:行者123 更新时间:2023-11-29 04:03:31 25 4
gpt4 key购买 nike

在 jax-ws 网络服务中,我无法直接访问 JaxbContext 对象。 JaxbContext 使用类 ObjectFactory。我尝试扩展它(如 Jaxb Adding Behaviors )。我将生成的代码放在 ObjectFactoryBase 中,然后添加

public class ObjectFactory extends ObjectFactoryBase {//.. overriden methods}

然而 IllegalAnnotationsException 在发布到 weblogic 时出现,因为它找不到 ObjectFactoryBase 中存在的某个 @XmlElementDecl。当我将带有此 @XmlElementDecl 的方法移动到 ObjectFactory 时,它起作用了。

添加 @XmlSeeAlso({ ObjectFactoryBase.class }) 也不走运。

编辑:我现在发现生成的 ObjectFactory 甚至没有被 jaxws Web 服务使用。所以上面的错误信息不再那么相关了。知道为什么生成但不使用它吗?

有什么想法吗?

最佳答案

JAXB ObjectFactories 是奇怪的野兽。你的问题有很多方面,所以我只用一个项目符号列表来回答:

  • JAXB1 依靠 ObjectFactory 来创建绑定(bind)类的实例,但对于 JAXB2,一切都是 POJO,而 ObjectFactory 基本上变得不必要了。它仍然由 XJC 生成,部分原因是为了向后兼容。
  • ObjectFactory 上的注释复杂且不明显,但由于它是一个生成的类,这通常无关紧要,而且大多数人也不会看它。
  • ObjectFactory 有时仍然有用,因为它为需要 JAXBElement 包装器的绑定(bind)类提供工厂方法,使用提供的工厂方法比手动执行此操作要容易得多。
  • JAXWS 网络服务可能会选择不使用 ObjectFactory,因为严格来说这不是必需的。但是,JAXBContext 可能仍会加载和解析它,具体取决于上下文的初始化方式。
  • 我从未尝试过自己创建 ObjectFactory;如果模型是 XJC 生成的,那么生成的 ObjectFactory 通常就足够了,如果您有一个手写的 JAXB 模型,则通常完全不需要 ObjectFactory。

关于java - 在 jax-ws Web 服务中子类化 ObjectFactory 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1832674/

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