Programando con Café

Programando con Café es el lugar de encuentro de todos sus tutoriales de programación que usted necesita en diferentes lenguajes de programación y base de datos

sábado, septiembre 25, 2010

Java - Web Services en Java - Comunicar Java con VB.Net parte I


"Si usa algún código del siguiente tutorial, den el icono de ME GUSTA del Facebook que se encuentra en su mano derecha, para que se vuelva Seguidor del Blog y también comentenos que tal les pareció el tutorial"


Entorno

  • JDK 6 Update 21
  • Netbeans 6.9.1
  • Apache Tomcat
  • MySQL 5.0.

1. Introducción


Un servicio web (en inglés Web service) es un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones. Logran la interoperabilidad dado que se adopta estándares abiertos. Para mejorar la interoperabilidad entre distintas implementaciones de servicios Web se ha creado el organismo WS-I, encargado de desarrollar diversos perfiles para definir de manera más exhaustiva estos estándares.

2. WSDL


Un formato XML que se utiliza para describir servicios Web (algunas personas lo leen como wisdel). Se usa a menudo en combinación con SOAP y XML. Un programa cliente que se conecta a un servicio web puede leer el WSDL para determinar que funciones están disponibles en el servidor. Los tipos de datos especiales se incluyen en el archivo WSDL en forma de XML Schema. El cliente puede usar SOAP para hacer la llamada a una de las funciones listadas en el WSDL.

3. SOAP (Simple Object Access Protocol)


El protocolo base que se utiliza para enviar la información, es SOAP. Este define el formato del “envelope” que se intercambia entre cliente y servicio, así como las convenciones para representar invocaciones y respuestas Estos mensajes son transmitidos en formato XML, montado sobre HTTP.

4. JAX - WS


Java API for XML Web Services. Es una tecnología que permite construir web services y clientes, que se comunican en base a XMLque permite escribir servicios que operen en modalidad message-oriented o RPC-oriented.
El protocolo SOAP es complejo, sin embargo, JAXWS esconde parte de esa complejidad al desarrollador
En el servidor
  • Se deben escribir una interfaz que defina las operaciones que el servicio expondrá
  • Se deben escribir una o mas clases, que implementen esas interfaces
En el cliente
  • Se crea un proxy, un objeto local que representa el servicio, sobre el se hacen las invocaciones
  • El parseo y análisis del XML subyacente, corre por cuenta de JAX-WS.

5. Ejemplo Web Service con Java


Lo que se va a desarrollar a continuación es como hacer los procesos basicos de mantenimiento a una tabla de una base de datos, estando toda la logica en un web service.


5.1. Base de Datos

5.1.1. Crear la siguiente tabla en la Base de datos.

5.2. Servidor en Java

Abrimos el Netbeans, la versión que se este usando, luego vamos a FILE -> NEW PROYECT -> WEB -> WEB APPLICATION y presionamos NEXT.
Como nombre al proyecto le ponemos: “WebServicaEnJava” y luego presionamos NEXT y luego FINISH.



Luego creamos un PACKAGE y le pones como nombre “PaqueteService”.

















Luego creamos una nueva clase, haciendo clic derecho en el PACKAGE que creamos y le ponemos como nombre “WebServiceJava”.


















En la clase que hemos creado, debemos de poner las siguientes importaciones y la siguiente declaración.










Declaramos las variables que vamos a usar, para manejar el proceso de inserción de datos en la tabla “Persona” de MySQL y creamos los métodos get y set que van hacer referencia a nuestras variables de la clase.














Luego creamos un nuevo método que se va a llamar “insertarPersona”, que se va a encargar de insertar un nueva fila a la tabla “Asistente” de MySQL, este metodo se debe de trabajar al igual como si ustedes estuvieran insertando datos a una tabla de una base de datos desde java desde una aplicación de escritorio o web, pudiendo usar Statement, PreparedStatement y CallableStatement, y  antes de la declaración del método ponemos la instrucción:  @WebMethod.


Luego creamos un nuevo método que se va a llamar “actualizarPersona”, que se va a encargar de actualizar un fila de la tabla “Asistente” de MySQL y  antes de la declaración del método ponemos la instrucción:  @WebMethod.



Luego creamos un nuevo método que se va a llamar “eliminarPersona”, que se va a encargar de eliminar una fila de la tabla “Asistente” de MySQL y  antes de la declaración del método ponemos la instrucción:  @WebMethod.



Luego creamos un nuevo método que se va a llamar “buscarPersonaCodigo”, que se va a encargar de buscar una fila de la tabla “Asistente” de MySQL y  antes de la declaración del método ponemos la instrucción:  @WebMethod.

También debemos de crear los métodos GET y SET de las variables y las convertimos a WebMethod.
Luego compilamos nuestro PACKAGE con la tecla F9 y veremos que en nuestro proyecto se creo una nueva carpeta llamada WEB SERVICE.

Ahora debemos desplegar la aplicación, haciendo clic derecho en el proyecto y luego CLEAN AND BUILD y después UNDEPLOY AND DEPLOY.




















Luego debemos testear el Web Service, para eso vamos a la carpeta que se creo automáticamente y seleccionamos el elemento que esta ahí y damos clic derecho en el y presionamos la opción TEST WEB SERVICE.



Y nos debe de salir una ventana como la que sigue:


Para ver la segunda parte hacer clic AQUI

Java - Enviar correo desde Java - JavaMail


"Si usa algún código del siguiente tutorial, den el icono de ME GUSTA del Facebook que se encuentra en su mano derecha, para que se vuelva Seguidor del Blog y también comentenos que tal les pareció el tutorial"

Este ejemplo muestra como enviar un correo desde java utilizando una cuenta de correo Gmail

public static boolean sendMessage(String mensaje,String subject, 
String correo){
        boolean rpta=false;
        Properties props = new Properties();
        // Nombre del host de correo, es smtp.gmail.com
        props.setProperty("mail.smtp.host", "smtp.gmail.com");
        // TLS si está disponible
        props.setProperty("mail.smtp.starttls.enable", "true");
        // Puerto de gmail para envio de correos
        props.setProperty("mail.smtp.port","587");
        // Cuenta de correo en gmail
        props.setProperty("mail.smtp.user", "correo@gmail.com");
        // Si requiere o no usuario y password para conectarse.
        props.setProperty("mail.smtp.auth", "true");
        Session session = Session.getDefaultInstance(props);
        //Verficiar el envio
        session.setDebug(true);
        MimeMessage  message = new MimeMessage(session);
        try {
            message.setSubject(subject);
            message.setText(mensaje);
            Address address = new InternetAddress(dt,"NombrePersona");
            message.setFrom(address);
            //La direccion de la persona a enviar
            Address address2 = new InternetAddress(correo,false);
            message.addRecipient(Message.RecipientType.TO,address2);
            Transport t = session.getTransport("smtp");
            t.connect("correo@gmail.com","clave");
            t.sendMessage(message,message.getAllRecipients());
            t.close();
            rpta=true;
        } catch (MessagingException ex) {
            ex.printStackTrace();
            return rpta;
        } catch (UnsupportedEncodingException ex) {
            ex.printStackTrace();
            return rpta;
        }
        return rpta;
}

Importaciones utilizadas

  • import javax.mail.Address
  • import javax.mail.BodyPart
  • import javax.mail.Message
  • import javax.mail.MessagingException
  • import javax.mail.Multipart
  • import javax.mail.Session
  • import javax.mail.Transport
  • import javax.mail.internet.InternetAddress
  • import javax.mail.internet.MimeBodyPart
  • import javax.mail.internet.MimeMessage
  • import javax.mail.internet.MimeMultipart

viernes, septiembre 24, 2010

Java - Número de días de un Mes determinado


"Si usa algún código del siguiente tutorial, den el icono de ME GUSTA del Facebook que se encuentra en su mano derecha, para que se vuelva Seguidor del Blog y también comentenos que tal les pareció el tutorial"


Método utilizado para obtener el numero de días que tiene un mes y año determinado
public static int diasDelMes(int mes, int año){

switch(mes){
case 0:  // Enero
case 2:  // Marzo
case 4:  // Mayo
case 6:  // Julio
case 7:  // Agosto
case 9:  // Octubre
case 11: // Diciembre
return 31;
case 3:  // Abril
case 5:  // Junio
case 8:  // Septiembre
case 10: // Noviembre
return 30;
case 1:  // Febrero
if ( ((año%100 == 0) && (año%400 == 0)) ||
((año%100 != 0) && (año%  4 == 0))   )
return 29;  // Año Bisiesto
else
return 28;
default:
throw new java.lang.IllegalArgumentException(
                "El mes debe estar entre 0 y 11");
}
}

Java - Número de días entre fechas


"Si usa algún código del siguiente tutorial, den el icono de ME GUSTA del Facebook que se encuentra en su mano derecha, para que se vuelva Seguidor del Blog y también comentenos que tal les pareció el tutorial"


Método utilizado para obtener el numero de días desde una fecha dada. El primer dato que pide es la fecha inicial hasta la fecha final


public static int diferenciasDeFechas(Date fechaInicial, Date fechaFinal) {
DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
String fechaInicioString = df.format(fechaInicial);
try {
fechaInicial = df.parse(fechaInicioString);
} catch (ParseException ex) {
}
String fechaFinalString = df.format(fechaFinal);
 try {
fechaFinal = df.parse(fechaFinalString);
} catch (ParseException ex) {
}
 long fechaInicialMs = fechaInicial.getTime();
 long fechaFinalMs = fechaFinal.getTime();
long diferencia = fechaFinalMs - fechaInicialMs;
double dias = Math.floor(diferencia / (1000 * 60 * 60 * 24));
return ((int) dias);
}