我尝试在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 Class
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>
答案 0 :(得分:3)
您可以通过向MyType
类添加JAXB注释来实现此目的:
import javax.xml.bind.annotation.*;
@XmlType(propOrder = {"c", "a", "b"})
public class MyType {
//...
但如果您尝试复制现有服务,那么最好的方法是使用wsimport
生成与现有WSDL匹配的Java类。
答案 1 :(得分:0)
更改bean中方法的顺序,可能不是调用顺序,它对结果XML没有任何影响。但更重要的是,使用WSDL,您可以在其中正确指定响应的模式,然后使用wsdl2java
从中生成bean。