1

WSDL で使用される一般的な Web サービス タイプの XSD を作成しています。私が必要とする一般的な型の 1 つは、列挙型です。

私の問題は、生成されたアーティファクトが列挙型ではなくクラスである wsimport を実行するときです。

Eclipse Indigo の XSD および WSDL エディターを使用しています。これは、列挙型を作成するためにデザイン モードで行うことです。

  1. 新しい複合型 (ResponseCodeType) を作成する
  2. ResponseCodeType に新しい文字列要素 (コード) を追加します
  3. コードの Constraint プロパティに、次の制約値を追加します: SUCCESS、WARNING、ERROR、FATAL

私は何を間違っていますか?

XSD ソース

<complexType name="ResponseCodeType">
    <sequence>
        <element name="code">
            <simpleType>
                <restriction base="string">
                    <enumeration value="SUCCESS"></enumeration>
                    <enumeration value="WARNING"></enumeration>
                    <enumeration value="ERROR"></enumeration>
                    <enumeration value="FATAL"></enumeration>
                </restriction>
            </simpleType>
        </element>
    </sequence>
</complexType>

wsimport によって生成されるアーティファクトの Java ソース

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ResponseCodeType", propOrder = {
    "code"
})
public class ResponseCodeType {

    @XmlElement(required = true)
    protected String code;

    /**
     * Gets the value of the code property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getCode() {
        return code;
    }

    /**
     * Sets the value of the code property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setCode(String value) {
        this.code = value;
    }

}
4

1 に答える 1

2

I figured it out. When I tried designing my enum I created a complex type with an element having the constraints I needed (SUCCESS, INFO, WARN, ect).

What I did instead was to create a simple type with a string element having the constraints (ResponseCode). Then I created a complex type (ResponseCodeType) with an element of ResponseCode.

When I executed wsimport, it generated ResponseCode as an enum and ResponseCodeType class with a ResponseCode attribute.

If anyone has a better approch please comment or provide a better answer.

于 2012-09-18T21:21:35.243 に答える