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>