Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jax-ws-web服务中的ObjectFactory子类化问题_Java_Jaxb - Fatal编程技术网

Java jax-ws-web服务中的ObjectFactory子类化问题

Java jax-ws-web服务中的ObjectFactory子类化问题,java,jaxb,Java,Jaxb,在jax-ws-web服务中,我无法直接访问JaxbContext对象。JaxbContext使用ObjectFactory类。我试着扩展它(如中所示)。我将生成的代码放入ObjectFactoryBase,然后添加 public class ObjectFactory extends ObjectFactoryBase {//.. overriden methods} 但是,发布到weblogic时出现了IllegalAnnotationsException,因为它在ObjectFactor

在jax-ws-web服务中,我无法直接访问JaxbContext对象。JaxbContext使用ObjectFactory类。我试着扩展它(如中所示)。我将生成的代码放入
ObjectFactoryBase
,然后添加

public class ObjectFactory extends ObjectFactoryBase {//.. overriden methods}
但是,发布到weblogic时出现了
IllegalAnnotationsException
,因为它在
ObjectFactoryBase
中找不到特定的
@xmlementdecl
。当我将带有此
@xmlementdecl
的方法移动到
ObjectFactory
时,它会工作

添加
@xmlsealse({ObjectFactoryBase.class})
也没有什么好运气

编辑:我现在发现生成的ObjectFactory甚至没有被jaxws web服务使用。因此,上述错误消息不再那么相关。你知道为什么它是生成的而不是使用的吗


有什么想法吗?

JAXB对象工厂是奇怪的野兽。你的问题有很多方面,所以我将用一个项目清单来回答:

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

JAXB对象工厂是奇怪的野兽。你的问题有很多方面,所以我将用一个项目清单来回答:

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

回答得很好,谢谢。顺便问一下,您是否已经看过新的(?)@UsesJAXBContext注释以及jaxws@WebService?它看起来很有希望,因为它提供了完全的控制,可能也在ObjectFactory上。我不明白您在这里试图做什么,因为我还在学习
jax ws
,我只是不知道
ObjectFactory
类在哪里?!什么罐子装的?谢谢,回答得很好,谢谢。顺便问一下,您是否已经看过新的(?)@UsesJAXBContext注释以及jaxws@WebService?它看起来很有希望,因为它提供了完全的控制,可能也在ObjectFactory上。我不明白您在这里试图做什么,因为我还在学习
jax ws
,我只是不知道
ObjectFactory
类在哪里?!什么罐子装的?非常感谢。