为什么部署的Axis2(.aar)无法读取@WebResult注释?

时间:2019-05-07 01:09:02

标签: web-services soap tomcat8 axis2

我写了一个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();
}

0 个答案:

没有答案