我写了一个SOAP Web服务,当我通过Eclipse使用Apache Tomcat-8部署它时,它工作得很好。但是,当我尝试使用.aar文件在aixs2上部署相同文件时,生成的wsdl不正确(或者不是我想要的那样)。
好像Axis2无法读取 @WebResult 注释。
我希望输出形式为
<ISWSLoginResult xmlns="http://www.test.com/"><![CDATA[<Session Action="Login" SessionKey="">
<RetStatus>0</RetStatus>
<ErrorString/>
<ISResponse>
<SessionKey>4e766d31-170f-4a0e-85fb-86934ad8b552</SessionKey>
</ISResponse>
</Session>]]></ISWSLoginResult>
但是我得到这个作为输出:
<ns:return><![CDATA[<Session Action="Login" SessionKey="2f46dff7-fd60-4bcd-943f-8f49f801c734">
<RetStatus>0</RetStatus>
<ErrorString/>
<ISResponse>
<SessionKey>2f46dff7-fd60-4bcd-943f-8f49f801c734</SessionKey>
</ISResponse>
</Session>]]></ns:return>
我进行了搜索,发现当您在代码中未提供@WebResult批注时会发生这种情况,但是我提供了相同的内容,并且似乎axis2无法读取它。
@WebMethod(action = "http://www.test.com/ISWSLogin", operationName = "ISWSLogin")
@WebResult(name = "ISWSLoginResult", targetNamespace = "http://www.test.com/")
public java.lang.String ISWSLogin(@WebParam(name = "username") java.lang.String username, @WebParam(name = "password") java.lang.String password)
{
System.out.println("Inside Webservice function iswsLogin");
ResponseXml xmlResp = new ResponseXml( "", "Login" );
String session = java.util.UUID.randomUUID().toString();
WASyncHandler handler = new WASyncHandler( session );
try
{
if( !handler.ISLogin( username, password ) )
throw new Exception( "Unknown error" );
Element key = xmlResp.getXmlDoc().createElement("SessionKey");
key.setTextContent(session);
xmlResp.getISResponse().appendChild(key);
}
catch( Exception ex )
{
xmlResp.setRetStatus(-1);
xmlResp.setErrorString( ex.getMessage() );
}
return xmlResp.getXml();
}