문제

i am trying to create a web service using the bottom-up approach by first creating the java class. My implementation looks like the following :

@WebMethod(operationName = "addNumbers")
public String addNumbers(
        @WebParam(name = "addNumberRequest") @XmlElement(required = true, nillable = false) final AddNumberRequest addNumberRequest) {
    return "Hello World";
}

The AddNumberRequest class is the following:

@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;
    }
}

The web service is published but when i generate a sample request from soapui , the request looks like the following :

<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>

Is there a way simply by using annotations to create a java implementation of the method so that a sample request would look like this :

<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>

I would like to have the ability to determine the name of the wrapper element for example addNumberRequest without having the ws:addNumbers (which is generated by the operationName by default) element at all.

도움이 되었습니까?

해결책

Try using

@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE) on addNumbers interface

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top