La interoperabilidad entre diferentes plataformas de desarrollo es, cada vez más, un hecho. Aunque no es nueva, la arquitectura orientada a servicios (SOA) es parte de ese planteamiento. Voy a exponer en este artículo lo sencillo que resulta integrar la plataforma .Net con Java a través de un servicio web construido en esta última. Aplica en diversos escenarios, como por ejemplo, casos en los que gran parte de la lógica se encuentra en aplicaciones Java ya desarrolladas que se intentan o pretenden migrar a .Net o en casos de clientes delgados que corran bajo plataformas Windows contra servidores con otros sistemas operativos. Es decir, nos sobran los motivos.
Prerrequisitos
Vamos a trabajar este ejemplo con las siguientes herramientas:
- NetBeans JDK 6.7.1. Puede descargarlo aquí.
- Java SE JDK. Puede descargarlo aquí.
- Visual Studio 2008 Service Pack 1. Puede descargar un trial aquí.
Creando un servicio web en Java con NetBeans
En primer lugar crearemos el servicio web en Java. Para hacerlo, en NetBeans haremos clic en Archivo –> Proyecto nuevo, después de lo cual aparecerá el siguiente diálogo:
Allí seleccionaremos la categoría Java Web y a continuación Web Application. Haremos clic en Siguiente. Viene el segundo paso del asistente: definiremos el nombre de nuestra aplicación y la ubicación, entre otros aspectos. En este ejemplo, nuestra aplicación llevará por nombre DiferenciaHoraria:
Clic en Siguiente. En el siguiente paso escogeremos el servidor y la versión específica de Java EE. En este caso usaremos GlassFish v2.1 y Java EE 5, respectivamente:
Clic en Terminar. NetBeans nos creará a nosotros un proyecto con una estructura similar a la que vemos en la siguiente imagen:
A continuación sobre nuestra aplicación web haremos clic derecho y del menú contextual seleccionaremos Nuevo –> Web service, como se muestra en la siguiente imagen:
En el cuadro de diálogo resultante asignaremos un nombre a la clase contenedora del servicio y un paquete:
Clic en Terminar. Reemplazaremos el código de nuestro servicio web con el siguiente:
package miempresa.misolucion.misservicios;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import java.util.*;
@WebService()
public class DiferenciasHorarias {
@WebMethod
public float CalcularDiferenciaEnHoras(@WebParam(name="hora")int prmHora,
@WebParam(name="minutos") int prmMinuto)
{
float horaRecibida = prmHora + (prmMinuto / 100);
Calendar calendario = new GregorianCalendar();
int horas = calendario.get(Calendar.HOUR_OF_DAY);
int minutos = calendario.get(Calendar.MINUTE);
float horaActual = horas + (minutos / 100);
float resultado = horaRecibida - horaActual;
return resultado;
}
}
Creando el cliente en .Net
Como este blog está orientado al desarrollo en .Net asumiré que sabemos crear una aplicación de consola por lo que iré omitiendo cosas:
Esta aplicación se llamará ClienteDiferenciaHoraria. Lo que haremos a continuación será establecer la conexión con el servicio web. Para ello agregaremos una nueva referencia de servicio como se ve en la siguiente imagen (para acceder a este menú haremos clic derecho sobre el proyecto):
En el cuadro de diálogo desplegado escribiremos la ruta del servicio (tomada anteriormente del navegador después de la puesta en prueba) y agregaremos el sufijo ?wsdl. Haremos clic en Ir y asignaremos un nombre a la referencia (en este caso DiferenciasHorariasServiceReference):
Visual Studio generará un cliente para el servicio web, como podemos ver en el explorador de objetos:
Finalmente haremos, desde nuestro código .Net, el llamado al servicio así:
static void Main(string[] args)
{
DiferenciasHorariasClient proxy = new DiferenciasHorariasClient();
float resultado =
proxy.CalcularDiferenciaEnHoras(21, 37);
Console.WriteLine("La diferencia es: {0}", resultado.ToString());
Console.ReadLine();
}
Ejecutaremos nuestra aplicación y veremos el resultado de la integración entre estas dos plataformas de desarrollo. Espero que sea útil para alguien.
El código usado aquí es meramente ilustrativo y no se trata de una solución real.
