小编Dav*_*Bob的帖子

如何指定jaxws和jaxb绑定来实现@XmlRootElement

我继承了一个与基于SOAP的Web服务进行通信的项目.虽然我已经做了很多年的Java并且已经做了很多工作,但我在这方面完全是菜鸟XML.

我们有一个WSDL服务文件,其中包含顶部的架构和下面的所有消息定义.在问题的核心,当我尝试通过我们的代码连接到服务时,我得到了可怕的无法编组类型" https.api_blah_com.services.v4.Product "作为元素,因为它缺少@XmlRootElement注释]

我的项目已经有一个jaxws绑定文件:

<jaxws:bindings wsdlLocation="../resources/wsdl/BlahAPI.wsdl"
  xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
  xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>
  <jaxws:bindings  
    node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='https:api.blah.com/services/v4']">
    <jxb:globalBindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xjc:generateElementProperty>true</xjc:generateElementProperty>
    </jxb:globalBindings>`
  </jaxws:bindings>
</jaxws:bindings>
Run Code Online (Sandbox Code Playgroud)

现在我已经读过,为了获得我生成的所有Java类@XmlRootElement,我需要添加一个jaxb:globalBinding简单模式.

我已经尝试添加到我的本地副本WSDL:

<xs:annotation>
  <xs:appinfo>
    <jaxb:globalBindings>
      <xjc:simple />
    </jaxb:globalBindings>
  </xs:appinfo>
</xs:annotation>
Run Code Online (Sandbox Code Playgroud)

JAXB编译器抱怨它不能遵守这个globalBindings自定义,因为它附加到错误的地方或与其他绑定不一致.

所以我尝试添加另一个绑定文件,仅用于jaxb,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings version="1.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
  xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <jaxb:bindings schemaLocation="../resources/wsdl/blah.wsdl">
    <jaxb:globalBindings>
      <xjc:simple />
    </jaxb:globalBindings>
  </jaxb:bindings>
</jaxb:bindings>
Run Code Online (Sandbox Code Playgroud)

但后来我得到一个错误,blah.wsdl不是这个编译的一部分.

我非常接近这个服务......我只是无法通过这一件事,这对我来说都是新的,所以我不确定还有什么可以尝试的.

我可以将他们WSDL分成一个XSD和一个WSDL?是否需要这项工作?

wsdl web-services cxf jax-ws jaxb

7
推荐指数
1
解决办法
7777
查看次数

标签 统计

cxf ×1

jax-ws ×1

jaxb ×1

web-services ×1

wsdl ×1