我正在尝试使用CXF创建Web服务客户端来消费WCF Web服务。
当我使用wsdl2java时,它生成具有JAXBElement类型而不是String类型的对象。
我了解到可以使用jaxb bindings.xml文件设置generateElementProperty="false"来尝试解决这个问题,但是我要消费的Web服务包含7个导入的模式。
如何在所有七个模式上指定generateElementProperty="false"
,或者是否有一种方式可以将其应用于所有模式?
我正在尝试使用CXF创建Web服务客户端来消费WCF Web服务。
当我使用wsdl2java时,它生成具有JAXBElement类型而不是String类型的对象。
我了解到可以使用jaxb bindings.xml文件设置generateElementProperty="false"来尝试解决这个问题,但是我要消费的Web服务包含7个导入的模式。
如何在所有七个模式上指定generateElementProperty="false"
,或者是否有一种方式可以将其应用于所有模式?
您需要创建以下绑定文件,这将全局应用并将其用作 wsdl2java -b "bindings.txt" "wsdl"
<jaxb:bindings version="2.1"
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:globalBindings generateElementProperty="false"/>
</jaxb:bindings>
<xjc:simple
来摆脱@Endpoint
中的JAXBElement
请求和响应包装器:<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" elementFormDefault="qualified" attributeFormDefault="unqualified" jaxb:extensionBindingPrefixes="xjc" jaxb:version="2.1">
<xs:annotation>
<xs:appinfo>
<jaxb:globalBindings>
<xjc:simple /><!-- it did only work after adding this -->
</jaxb:globalBindings>
</xs:appinfo>
</xs:annotation>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<jaxws:bindings xmlns:jaxws="https://jakarta.ee/xml/ns/jaxws"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jxb="https://jakarta.ee/xml/ns/jaxb"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<jxb:globalBindings generateElementProperty="false"/>
</jaxws:bindings>
.xml
或.xjb
,如此处所提出的http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/2.0/tutorial/doc/JAXBUsing4.html#wp148366。 - schnattererJaxWsDynamicClientFactory.newInstance().createClient("wsdl", Arrays.asList("bindings.txt"))
- Gat