我正在使用CXF创建合同第一个webservices类。 我有一个wsdl,它有一个xsds导入的负载。 这些xsds都在我的Java项目中的一个包中。
我创建了一个XJB文件,它可以完成我想要的工作,但是如果我要拥有很多我期待的xsds,它会占用太多代码来维护。任何解决方案都将不胜感激。
XJB:
<jaxb:bindings schemaLocation="wsdl-xsd/contacts_input.xsd#REQUESTType"
node="/xs:schema">
<jaxb:bindings node="//xs:complexType[@name='REQUESTType']">
<annox:annotate target="class">
<annox:annotate annox:class="javax.xml.bind.annotation.XmlRootElement"
name="REQUESTType" />
</annox:annotate>
</jaxb:bindings>
</jaxb:bindings>
<jaxb:bindings schemaLocation="wsdl-xsd/contacts_output.xsd#RESPONSEType"
node="/xs:schema">
<jaxb:bindings node="//xs:complexType[@name='RESPONSEType']">
<annox:annotate target="class">
<annox:annotate annox:class="javax.xml.bind.annotation.XmlRootElement"
name="RESPONSEType" />
</annox:annotate>
</jaxb:bindings>
</jaxb:bindings>
WSDL:
<!-- Contact Services -->
<xsd:import namespace="http://contacts_request.global_test.ws.test.com" schemaLocation="contacts_input.xsd"/>
<xsd:import namespace="http://contacts_response.global_test.ws.test.com" schemaLocation="contacts_output.xsd"/>
答案 0 :(得分:0)
最后,我能够通过使用简单的minded绑定来解决这个问题,该绑定为我的复杂元素提供了@XMLROOTELEMENT注释。我决定创建一个具有复杂类型REQUEST / RESPONSE类型的匿名根元素。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
jaxb:version="2.0" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc">
<jaxb:globalBindings optionalProperty="wrapper">
<xjc:simple />
</jaxb:globalBindings>