最初に Java クラスを作成することにより、ボトムアップ アプローチを使用して Web サービスを作成しようとしています。私の実装は次のようになります。
@WebMethod(operationName = "addNumbers")
public String addNumbers(
@WebParam(name = "addNumberRequest") @XmlElement(required = true, nillable = false) final AddNumberRequest addNumberRequest) {
return "Hello World";
}
AddNumberRequest クラスは次のとおりです。
@Repository
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = { "number1", "number2", "number3" })
public class AddNumberRequest {
private int number1;
private int number2;
private int number3;
public int getNumber1() {
return number1;
}
public void setNumber1(int number1) {
this.number1 = number1;
}
public int getNumber2() {
return number2;
}
public void setNumber2(int number2) {
this.number2 = number2;
}
public int getNumber3() {
return number3;
}
public void setNumber3(int number3) {
this.number3 = number3;
}
}
Web サービスは公開されていますが、soapui からサンプル リクエストを生成すると、リクエストは次のようになります。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.service.test.com/">
<soapenv:Header/>
<soapenv:Body>
<ws:addNumbers>
<addNumberRequest>
<number1>?</number1>
<number2>?</number2>
<number3>?</number3>
</addNumberRequest>
</ws:addNumbers>
</soapenv:Body>
</soapenv:Envelope>
サンプルリクエストが次のようになるように、アノテーションを使用してメソッドのJava実装を作成するだけの方法はありますか?
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.service.test.com/">
<soapenv:Header/>
<soapenv:Body>
<addNumberRequest>
<number1>?</number1>
<number2>?</number2>
<number3>?</number3>
</addNumberRequest>
</soapenv:Body>
</soapenv:Envelope>
ws:addNumbers (デフォルトでは operationName によって生成される) 要素をまったく持たずに、たとえば addNumberRequest などのラッパー要素の名前を決定できるようにしたいと考えています。