JAVA-公开Web服务-父节点问题

时间:2018-09-14 08:45:09

标签: java web-services webmethod

Java的新功能,如下所示,它很难在Java中公开Web服务。

代码:

@WebService(serviceName="LoginService", 
name="LoginService",targetNamespace="http://XYZ")

public interface ILoginService {

    @WebMethod(action="Login1", operationName="Login1")
    String Login1(
        @WebParam(name="LoginBody", targetNamespace="") LoginBody loginBody 
    );

    @XmlAccessorType(XmlAccessType.NONE)  
    class LoginBody{ 
        @XmlElement(required=true,name="Id")
        String ID;
        @XmlElement(required=true,name="password")
        String password; 
        @XmlElement(required=true,name="domain")
        String domain;
    }
}

结果:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xyz="http://XYZ">
<soapenv:Header/>
<soapenv:Body>
  <xyz:Login1>
     <!--Optional:-->
     <LoginBody>
        <Id>?</Id>
        <password>?</password>
        <domain>?</domain>
     </LoginBody>
  </xyz:Login1>
</soapenv:Body>

预期结果: 当我在SOAPUI中使用zyx:Login1时,我不希望它出现在请求中。而是应直接从xyz:LoginBody开始,如下所示。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:ass="http:/XYZ">
<soapenv:Header/>
<soapenv:Body>
  <ass:LoginBody>
     <Id></Id>
     <password></password>
     <domain></domain>
  </ass:LoginBody>
</soapenv:Body>
</soapenv:Envelope>

0 个答案:

没有答案