से अलग संकलित स्कीमा यदि कई वेबसाइसेस में उपयोग की जाने वाली बड़ी स्कीमा है, तो मैं डब्लूएसडीएल संकलन से एक्सएसडी संकलन को अलग करना चाहता हूं। एक सरल उदाहरण में, एक ही चरण में संकलन काम करता है:जेएक्स-डब्ल्यूएस: डब्लूएसडीएल
$ wsimport -verbose service.wsdl
parsing WSDL...
Generating code...
org/example/wsdl/mysvc/MySvcPortType.java
org/example/wsdl/mysvc/MySvcService.java
org/example/ns1/Element1.java
org/example/ns1/ObjectFactory.java
org/example/ns1/package-info.java
...
XSD संकलन और जिसके परिणामस्वरूप प्रकरण फ़ाइल का उपयोग कर काम नहीं करता:
$ wsimport -b schema3.episode service.wsdl
parsing WSDL...
[ERROR] Schema descriptor {http://www.example.org/ns1}element1 in
message part "part1" is not defined and could not be bound to Java.
Perhaps the schema descriptor {http://www.example.org/ns1}element1 is
not defined in the schema imported/included in the WSDL. You can
either add such imports/includes or run wsimport and provide the
schema location using -b switch. line 9 of
file:...jaxepisode_element/service.wsdl
तो मैं कैसे wsimport में precompiled स्कीमा का उपयोग कर सकते हैं?
परिशिष्ट: जब एक और स्कीमा कार्यों में शामिल हैं और नए संकलन (d3.jar schema3 + META-INF/धूप में jaxb.episode रूप schema3.episode से genrated कक्षाएं शामिल हैं) से बचा जाता है प्रकरण का उपयोग करना:
$ xjc schema4.xsd d3.jar -extension
parsing a schema...
compiling a schema...
org/example/ns2/Element2.java
org/example/ns2/ObjectFactory.java
org/example/ns2/package-info.java
precompiled पैकेज के बिना:
$ xjc schema4.xsd -extension
parsing a schema...
compiling a schema...
org/example/ns1/Element1.java
org/example/ns1/ObjectFactory.java
org/example/ns1/package-info.java
org/example/ns2/Element2.java
org/example/ns2/ObjectFactory.java
org/example/ns2/package-info.java
डबल्यूएसडीएल:
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://example.org/wsdl/MySvc" xmlns:ns="http://www.example.org/ns1" targetNamespace="http://example.org/wsdl/MySvc" name="MySvc">
<types>
<xsd:schema>
<xsd:import namespace="http://www.example.org/ns1" schemaLocation="schema3.xsd"/>
</xsd:schema>
</types>
<message name="myOpRequest">
<part name="part1" element="ns:element1"/>
</message>
<message name="myOpReply">
<part name="part1" element="ns:element1"/>
</message>
<portType name="MySvcPortType">
<operation name="myOp">
<input name="input1" message="tns:myOpRequest"/>
<output name="output1" message="tns:myOpReply"/>
</operation>
</portType>
<binding name="MySvcBinding" type="tns:MySvcPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="myOp">
<soap:operation/>
<input name="input1">
<soap:body use="literal"/>
</input>
<output name="output1">
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="MySvcService">
<port name="MySvcPort" binding="tns:MySvcBinding">
<soap:address location="http://localhost:8080/"/>
</port>
</service>
</definitions>
schema3.xsd:
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/ns1"
xmlns:tns="http://www.example.org/ns1"
elementFormDefault="qualified">
<element name="element1" >
<complexType >
<sequence>
<element name="name" type="string" />
</sequence>
</complexType>
</element>
</schema>
schema4.xsd:
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/ns2"
xmlns:tns="http://www.example.org/ns2"
xmlns:ns1="http://www.example.org/ns1"
elementFormDefault="qualified">
<import namespace="http://www.example.org/ns1" schemaLocation="schema3.xsd"/>
<element name="element2" >
<complexType >
<sequence>
<element ref="ns1:element1" />
</sequence>
</complexType>
</element>
</schema>
उत्पन्न प्रकरण फ़ाइल:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bindings version="2.1" xmlns="http://java.sun.com/xml/ns/jaxb">
<bindings scd="x-schema::tns" xmlns:tns="http://www.example.org/ns1">
<schemaBindings map="false">
<package name="org.example.ns1"/>
</schemaBindings>
<bindings scd="tns:element1">
<class ref="org.example.ns1.Element1"/>
</bindings>
</bindings>
</bindings>
क्या आपने [यह प्रश्न] देखा है (http://stackoverflow.com/q/1682479/1064325), और [यह धागा] (http://www.coderanch.com/t/460978/Web-Services/ जावा/डबल्यूएसडीएल-सेवा)? – falsarella
मैंने उन्हें पहले नहीं देखा है लेकिन उन्हें पढ़ने के बाद मुझे नहीं लगता कि समाधान मेरे मामले में लागू हैं। कोडरंच-ट्र्रावाड के बारे में: मैं पहले से ही अपने संदेशों के लिए तत्वों का उपयोग करता हूं, प्रकार नहीं। ओह SO प्रश्न का पुन: प्रयास करना: मेरे पास 2001 स्कीमा नेमस्पेस है, मेरे पास मेरे नाम में कोई नेमस्पेस नहीं है- विशेषताएँ और 'टाइप = "स्ट्रिंग" 'सही है क्योंकि xmls स्कीमा डिफ़ॉल्ट नामस्थान है। – Drunix