2

SOAP リターン メッセージでリターン タイプの順序を設定しようとしていますが、アルファベット順に出力され続けます。戻り値の型の順序を変更する方法はありますか?

タイプを C、A、B の順に設定していますが、常に ABC が出力されます。

ウェブ方式

@WebMethod(operationName = "Method")
    @WebResult(name="myType")    
    public MyType Method(@WebParam(name = "string1") String string1, @WebParam(name = "string2") String string2,@WebParam(name = "string3") String string3) {

        MyType mt = new MyType();

        mt.setC(string3);
        mt.setA(string1);
        mt.setB(string2);

        return mt;
    }

MyType クラス

public class MyType {

    private String a;
    private String b;
    private String c;

    public String getA() {
        return a;
    }

    public void setA(String a) {
        this.a = a;
    }

    public String getB() {
        return b;
    }

    public void setB(String b) {
        this.b = b;
    }

    public String getC() {
        return c;
    }

    public void setC(String c) {
        this.c = c;
    }


}

現在の石鹸応答

<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:MethodResponse xmlns:ns2="http://bbb/">
            <myType>
                <a>one</a>
                <b>two</b>
                <c>three</c>
            </myType>
        </ns2:MethodResponse>
    </S:Body>
</S:Envelope>

理想的な石鹸反応

<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:MethodResponse xmlns:ns2="http://bbb/">
            <myType>
                <c>three</c>
                <a>one</a>
                <b>two</b>
            </myType>
        </ns2:MethodResponse>
    </S:Body>
</S:Envelope>
4

2 に答える 2

3

MyTypeクラスにJAXBアノテーションを追加することで、それを実行できる場合があります。

import javax.xml.bind.annotation.*;

@XmlType(propOrder = {"c", "a", "b"})
public class MyType {
  //...

ただし、既存のサービスを複製しようとしている場合はwsimport、既存のWSDLに一致するJavaクラスを生成するために使用するのが最善の方法です。

于 2012-10-12T10:16:09.470 に答える
0

Bean 内のメソッドの順序を変更します。おそらく、結果の XML にまったく関係のない呼び出し順序ではありません。しかし、もっと重要なことは、応答のスキーマを適切に指定できる WSDL を使用し、wsdl2java.

于 2012-10-12T09:45:39.390 に答える