lunes, 7 de marzo de 2016

Integración WS-ADF

Vamos a mostrar la integración de un WS para su consumo desde ADF. Para ello vamos a realizar los siguientes pasos:

1º) Creamos un proyecto Java donde residirá el punto de entrada al WS.











2º) Seleccionamos en el proyecto con New => Web Service  Client and Proxy.

3º) Indicamos la URL del WSDL del servicio e indicamos que queremos copiar el WSDL en nuestro proyecto.







4º) Dejamos las opciones por defecto hasta "Policy" donde debemos marcar la política del WS (tipo de autenticación y seguridad). En nuestro caso es la oracle/wss_http_token_service_policy




5º) Observamos la estructura de ficheros que se han creado. En la clase nameServicioPortClient se muestra un ejemplo de como se crea el servicio:

    public static void main(String[] args) {
        GlanceVolcadoBindQSService glanceVolcadoBindQSService = new GlanceVolcadoBindQSService();

        // Configure security feature
        SecurityPoliciesFeature securityFeatures = new SecurityPoliciesFeature(new String[] {
                                                                               "oracle/wss_http_token_client_policy" });
        GlanceVolcadoPtt glanceVolcadoPtt = glanceVolcadoBindQSService.getGlanceVolcadoBindQSPort(securityFeatures);
        // Add your code to call the desired methods.


    }


6º) Creamos un paquete aparte donde crearemos propiamente el servicio:

    public int getGlanceVolcado(String cdIdenti, int pendientes, Date fecha) {
        System.out.println("AnaliticasOperacionesServiceImpl::Llamada servicio...");
        int respuesta = -1;
        GlanceVolcadoBindQSService glanceVolcadoBindQSService = new GlanceVolcadoBindQSService();

        // Configure security feature
        SecurityPoliciesFeature securityFeatures = new SecurityPoliciesFeature(new String[] {
                                                                               "oracle/wss_http_token_client_policy" });


// Add your code to call the desired methods.

//Objecto que sirve el servicio
         GlanceVolcadoPtt glanceVolcadoPtt = glanceVolcadoBindQSService.getGlanceVolcadoBindQSPort(securityFeatures);
        try {

//Cogemos los parámetros de la request del contexto, en este caso el usuario y contraseña de la //policy
            Map<String, Object> reqContext = ((BindingProvider) glanceVolcadoPtt).getRequestContext();
            reqContext.put(BindingProvider.USERNAME_PROPERTY, AnaliticasOperacionesConstants.wss_http_token_client_policy_username);
            reqContext.put(BindingProvider.PASSWORD_PROPERTY, AnaliticasOperacionesConstants.wss_http_token_client_policy_pwd);



//Creamos un objecto de tipo solicitud para pasar los parámetros necesarios
            VolcadoRequestType request = new VolcadoRequestType();
            request.setCdidenti(cdIdenti);
            DatatypeFactory df = DatatypeFactory.newInstance();
            GregorianCalendar gc = new GregorianCalendar();
            gc.setTimeInMillis(fecha.getTime());
            request.setFechaIni(df.newXMLGregorianCalendar(gc));
            request.setPendientes(pendientes);
            System.out.println("AnaliticasOperacionesServiceImpl::getGlanceVolcado::cdIdenti::"+cdIdenti);
            System.out.println("AnaliticasOperacionesServiceImpl::getGlanceVolcado::pendientes::"+pendientes);
            System.out.println("AnaliticasOperacionesServiceImpl::getGlanceVolcado::fecha::"+fecha);

//Hacemos la llamada al servicio y recogemos la respuesta
            VolcadoResponseType response = glanceVolcadoPtt.glanceVolcado(request);
            if (response != null) {

//El resultado de la llamada al servicio
                respuesta = response.getResult();
                System.out.println("AnaliticasOperacionesServiceImpl::getGlanceVolcado::Respuesta::"+response.getResult());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("AnaliticasOperacionesServiceImpl::Fin llamada servicio");
        return respuesta;
    }


 6º) En nuestro proyecto ViewController, primeramente en "Dependencies" debemos añadir el build output del proyecto del servicio para poder utilizar sus clases.





7º) Creamos una clase Bean que contendrá la llamada al método del servicio de la clase creada anteriormente:

public class PruebaBean {
    public PruebaBean() {
        super();
    }
   
    public int getGlanceVolcado(String cdIdenti, int pendientes, Date fecha){
        AnaliticasOperacionesServiceImpl impl = new AnaliticasOperacionesServiceImpl();
        return impl.getGlanceVolcado(cdIdenti, pendientes, fecha);
    }
}



8º) Creamos un DataControl de la clase creada, mediante botón derecho en la clase "Create Data
Control":







9º) Ahora el método puede ser accesible desde cualquier taskflow y realizar la llamada al servicio



 





No hay comentarios:

Publicar un comentario