Ste*_*fan 5 java xml jax-ws jaxb jax-ws-customization
JAX-WS要求传输的所有类都具有默认的构造函数(no-arg构造函数).我不明白这个要求,因为客户端基于WSDL创建自己的类.IMO此要求仅适用于那些用作Webservice输入参数的类.
有谁知道如何规避这一要求?
使用JAX-WS时,您使用JAXB实现将Java对象序列化为XML.
所以,"问题"是JAXB的工作原理.
要使用JAXB,您需要创建一个JAXBContext,将所有可以编组/解组的类传递给它.在创建上下文时,JAXB将检查所有给定的类是否具有无参数构造函数.如果这些类中至少有一个没有这种构造函数,则不会创建上下文.
为什么JAXB会这样做?只有在从XML转换为Object(解组)时才需要这个no-arg构造函数,但问题是当你创建上下文时,JAXB不知道你想做什么(编组或解组)!
结论: JAXB只接受可以编组和解组的类.更多信息在这里
知道这一点,JAX-WS会发生什么?
在声明@WebMethod的参数和返回值类将被添加到JAXB上下文.因此,所有与Web服务输入和输出相关的类都需要一个无参数构造函数.
结论:是JAXB错误;-)
但是如果我需要使用没有no-arg构造函数的类呢?
您可以使用XMLAdapter!查看此帖子了解更多信息......
| 归档时间: |
|
| 查看次数: |
3880 次 |
| 最近记录: |