• Axis WS Client Usando AXIOM

    Apache Axis2, el cual ya esta siendo dejado de lado por su complejidad y el surgimiento de otros web services stack como Metro y Apache CXF con mayor performance, brinda a los usuarios variadas opciones de data bindings.

    Este artículo muestra como llamar a un Web Service utilizando Axis Object Model. Esta técnica es de "bajo nivel", parecida a la API de JAX-WS Provider/Dispatcher. Utilizar AXIOM es mejor que trabajar con XML DOM elements pero ciertamente más complejo que hacerlo con ADB o JAXB.

    Primero los imports de las classes utilizadas

    import org.apache.axiom.om.OMAbstractFactory;
    import org.apache.axiom.om.OMElement;
    import org.apache.axiom.om.OMFactory;
    import org.apache.axiom.om.OMNamespace;
    import org.apache.axis2.addressing.EndpointReference;
    import org.apache.axis2.client.Options;
    import org.apache.axis2.client.ServiceClient;

     

    Y ahora el código para el llamado al WS

    OMFactory factory = OMAbstractFactory.getOMFactory();
    OMNamespace omNs = fac.createOMNamespace("yournamespace", "someprefix");
    OMElement method = fac.createOMElement("theActionName", omNs);
    
    OMElement param1 = fac.createOMElement("someParam", omNs);
    param1.setText("someValue");
    method.addChild(param1);
    
    String url = "http://server/webserviceURL";
    ServiceClient client = new ServiceClient();
    Options opts = new Options();
    // es super importante, el timeout siempre lo define
    // el cliente, hay que tener en cuenta que si la operación
    // es larga es importante darle un buen timeout en ms
    opts.setTimeOutInMilliSeconds(300000);
    opts.setTo(new EndpointReference(url));
    opts.setAction("theActionName");
    client.setOptions(opts);
    OMElement res = client.sendReceive(method);
    
    // finalmente la respuesta que es nada mas
    // y nada menos que un XML
    System.out.println(res);

     

    La implementacion de AXIOM no es sencilla pero es lo más versátil en cuanto a customización de un request a un WebService.

    Tags: , , , ,

Leave a comment