2

我试图在我的肥皂返回消息中设置返回类型的顺序,但它一直按字母顺序打印出来。有没有办法改变我的返回类型的顺序?

我按 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 回答