XFire y Eclipse

Febrero 16, 2010 :: Posted by - Emilio Torrens :: Category - , ,

XFire te permite generar el código necesario para un cliente de webservice a partir de su WSDL

image  Para usarlo con Eclipse debes instalar el Plugin, para eso vas al menú Help/Install New Software le das a Add en Name le pones XFire y en location le pones esta dirección “http://dist.codehaus.org/xfire/update/â€, Ok, Finish y ya lo tienes instalado.

image  Para usarlo vas al proyecto, New/Other, buscas el Wizard de XFire y allí solo tienes que poner la dirección del WSDL y donde quieres que te genere el código y listo.

Con estos pocos pasos ya tienes todas las clases necesarias para acatar el servicio, además con XFire no he tenido problemas con los WSDL de ningún servicio.

Es importante que añadas commons-httpclient-3.0.jar y commons-codec.jar al proyecto ya que XFire las necesita.

Generando clases en Java desde WSDL autogenerados (asmx)

Abril 14, 2009 :: Posted by - Emilio Torrens :: Category - ,

Tenemos un par de Clientes que usan Java y tienen que consumir los servicios web de nuestras aplicaciones (asmx), hemos tenido muchos problemas generando las clases desde Eclipse o el Intellij IDEA desde el wsdl autogenerado de los asmx.

Al final hemos encontrado la solución, usar el XFIRE, usando ese framework de Java no hemos tenido problemas

Aquí hay un quickstart de cómo utilizar el plugin en el Eclipse:

http://xfire.codehaus.org/Eclipse+Plugin

Documentación:

http://xfire.codehaus.org/User’s+Guide

Hay una nueva versión que se llama CXF

http://cxf.apache.org/

Aunque no la hemos probado, así que para ir sobre seguro usa o recomienda usar XFIRE

Un poco de Java

Enero 27, 2009 :: Posted by - Emilio Torrens :: Category -

Tenia algunos problemas con un cliente que consumía un servicio mío mandando XML por HTTP-POST, el IIS bloqueaba sus peticiones y no había manera de ver porque, así que me hice un cliente exacto al suyo para poder debugear el tema.

Por si os sirve, aquí os dejo el código Java:

import java.io.*;
import java.net.*;
import java.util.Properties;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;

public static String POST(String sURL, String sData)
   {
        try
        {
            URL url = new URL(sURL);
            URLConnection urlc = url.openConnection();
            urlc.setRequestProperty("Content-Type",    "application/x-www-form-urlencoded");
            urlc.setDoOutput(true);
            OutputStream os = urlc.getOutputStream();

            byte[] postData = sData.getBytes();
            os.write(postData);

            os.flush();
            os.close();

            InputStream is = urlc.getInputStream();

            return parseISToString(is);

        }
        catch(IOException ex)
        {
            return ex.getMessage();
        }
   }

   public static String parseISToString(java.io.InputStream is)
   {

        java.io.DataInputStream din = new java.io.DataInputStream(is);
        StringBuffer sb = new StringBuffer();

        try
        {
            String line = null;
            while((line=din.readLine()) != null)
            {
                sb.append(line+"\n");
            }
            return sb.toString();
        }
        catch(Exception ex)
        {
            return ex.getMessage();
        }

   }