我正在尝试使用CXF创建一个Web服务客户端来使用WCF Web服务。 当我使用wsdl2java时,它使用JAXBElement类型而不是String生成对象。
我读到了使用jaxb bindings.xml文件来设置generateElementProperty =“false”以尝试修复问题,但我正在使用的Web服务包含7个导入的模式。
如何在所有七个模式中指定generateElementProperty="false"
,或者是否有办法将其应用于所有模式?
答案 0 :(得分:65)
您必须创建一个绑定文件,如下所示,这将全局应用并将其用作 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>
答案 1 :(得分:0)
请注意,就我而言,我必须在jaxb绑定文件中使用<xjc:simple
来摆脱JAXBElement
中的@Endpoint
请求和响应包装:
<?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>