0

リモートデバイスのSOAPメッセージを定義するXSDがあります。このXSDを取得し、そこからJavaソースコードを生成してこれらのメッセージを作成したいと思います。XSDの1つのメッセージの例は次のとおりです。

<xs:element name="get-ethernet-stats">
    <xs:annotation>
        <xs:documentation>Ethernet stats information</xs:documentation>
    </xs:annotation>
    <xs:complexType>
        <xs:sequence>
            <xs:element name="mode" type="response-mode"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
<xs:element name="get-ethernet-stats-resp">
    <xs:complexType>
        <xs:annotation>
            <xs:documentation>Ethernet Stats</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element ref="status"/>
            <xs:element name="result" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="rx" type="xs:int"/>
                        <xs:element name="tx" type="xs:int"/>
                        <xs:element name="drops" type="xs:int"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

これを行う方法について何か提案はありますか?JAXBを調べましたが、元のソースファイルがありません。「xjcfile.xsd」を実行してソースファイルを取得すると、出力の一部が次のようになります。

parsing a schema...
compiling a schema...
[ERROR] A class/interface with the same name "file.MemosReceipt" is already in use. Use a class customization to resolve this conflict.
  line 7669 of file:/Users/rwb7041/Documents/file/xsd/file.xsd.xsd

[ERROR] (Relevant to above error) another "MemosReceipt" is generated from here.
  line 8242 of file:/Users/rwb7041/Documents/file/xsd/file.xsd.xsd

[ERROR] A class/interface with the same name "file.InstructionsReceipt" is already in use. Use a class customization to resolve this conflict.
  line 7720 of file:/Users/rwb7041/Documents/file/xsd/file.xsd.xsd

[ERROR] (Relevant to above error) another "InstructionsReceipt" is generated from here.
  line 8341 of file:/Users/rwb7041/Documents/file/xsd/file.xsd.xsd

[ERROR] Two declarations cause a collision in the ObjectFactory class.
  line 7686 of file:/Users/rwb7041/Documents/file/xsd/file.xsd.xsd

[ERROR] (Related to above error) This is the other declaration.   
  line 8267 of file:/Users/rwb7041/Documents/file/xsd/file.xsd.xsd

[ERROR] Two declarations cause a collision in the ObjectFactory class.
  line 8626 of file:/Users/rwb7041/Documents/file/xsd/file.xsd.xsd

[ERROR] (Related to above error) This is the other declaration.   
  line 6114 of file:/Users/rwb7041/Documents/file/xsd/file.xsd.xsd

Failed to produce code.
4

1 に答える 1

0

jaxws-rt-2.1.4.jarをご覧になることをお勧めします。これにより、SOAP メッセージで送信される XML を提供する 2 つの方法が可能になります。
(1) 本文コンテンツのみを提供します。コードは、取得した wsdl に従ってエンベロープ/ヘッダー/ボディと名前空間を追加します
(2) 完全なエンベロープと名前空間を提供します

その場合、コード生成は必要ありません。

たとえば、 jaxws-guide.htmlを参照してください。

于 2012-04-07T16:45:38.990 に答える