JAXB生成JAXBElement 而不是String
我正在使用Apache CXF
cxf-codegen-plugin
Maven
插件从WSDL
文件生成源代码。 问题是我生成了JAXBElement
而不是String
。 我添加了jaxb-bindings.xml
文件,如下所示:
这应该可以防止JAXB
生成JAXBElement
。 但它不起作用我仍然生成JAXBElement
而不是String
。
我的Maven
插件看起来像这样:
org.apache.cxf cxf-codegen-plugin ${cxf.runtime.version} org.apache.cxf cxf-rt-bindings-soap ${cxf.runtime.version} generate-jaxb generate-sources -Dfile.encoding=UTF8 src/main/resources/wsdl/Cubiks.wsdl -b ${basedir}/jaxb-bindings.xml -b ${basedir}/jaxws-bindings.xml -exsh true -wsdlLocation src/main/resources/wsdl/CubiksCallBackService.wsdl -b ${basedir}/jaxws-bindings.xml -b ${basedir}/jaxb-bindings.xml -exsh true -p com.cubiks.ws.callback -wsdlLocation wsdl2java
CXF
版本是2.6.0
。 有人知道问题出在哪里吗?
编辑
XSD非常庞大。 这是生成JAXBElement
的元素
生成的源是:
@XmlElementRef(name = "RequestStatusDescription", namespace = "http://www.cubiksonline.com/2009/08/AssessmentProvider", type = JAXBElement.class) protected JAXBElement requestStatusDescription;
我必须做的是用另一个jaxb:bindings
包装jaxb:globalBindings
。
现在一切正常,没有生成JAXBElement
。
你不能一起拥有nillable和minoccurs。 删除minoccurs,因为它无论如何都对字符串没有意义。
我想你想添加你的jaxb-binding.xml: