Почему развернутый Axis2 (.aar) не читает аннотацию @WebResult? - PullRequest
0 голосов
/ 07 мая 2019

Я написал веб-сервис SOAP, и он отлично работает, когда я развертываю его, используя Apache Tomcat-8 через мое затмение. Но когда я пытаюсь развернуть то же самое на aixs2, используя файл .aar, сгенерированный 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();
}
...