miércoles, 30 de junio de 2010

Consumir WebServices - Integrar Aplicaciones mediante WebServices

Aveces tenemos la necesitad de usar servicios no propio de nuestra aplicación interna y requerimos servicios de otro proveedor o otra aplicación.

En este caso al identificar la ubicación del servicio expuesto (WSDL) o la descripción del Web Services, podemos fácilmente consumirlo con NetBeans.

Aquí un video demostrativo.

martes, 29 de junio de 2010

Creación de un Web Services desde una clase Java

En este vídeo hecho por mi persona podrán ver una forma rápida y sencilla de como crear servicios web si tienes una clase Java.


jueves, 22 de abril de 2010

Introducción a Spring Framework

¿Quieres aprender Spring?.
No sabes como comenzar, aquí un video demostrativo que te explica como es su funcionamiento.

El IDE que utilizan es el SpringSource Tool, creado por la comunidad spring.(Aquí el link).


martes, 16 de marzo de 2010

Mejores prácticas al programar en Java

Aquí les dejo una presentación sobre las mejores prácticas al programar en Java.
Les sugiero que tomen apunten de estos tips, pues me di cuenta que aveces también caemos en lo erróneo.

Vía | JavaCurioSities

lunes, 15 de marzo de 2010

Leer Excel con Java

Para leer los datos de un hoja de cálculo, sólo nos es necesario:
-Jar JXL(Descargalo aquí).
-1 Hoja de calculo de Ejemplo
-Y el siguiente código.
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
/**
 * @author JocLuis
 */
public class NewClass {
    public static void main(String[] args) throws IOException, BiffException {
        //ruta de la hoja del calculo 
        Workbook workbook = Workbook.getWorkbook(new File("c://Libro1.xls"));
        Sheet sheet = workbook.getSheet(0);//Elegimos la primera hoja
        Cell celdaCurso = null;//inicializo el objeto que leerá el valor de la celda
        String valorCeldaCurso=null;
        celdaCurso= sheet.getCell(7,1);//celda de la columna 7 y fila 1
        valorCeldaCurso= celdaCurso.getContents();//obteniendo valor
        System.out.println(valorCeldaCurso);
        workbook.close();
    }
}

Y esto será el resultado:


También mira:
Exportar de JSP a Excel

lunes, 8 de marzo de 2010

Instalando OpenESB (GlassFish ESB)

En esta oportunidad, vamos a ver los pasos de como instalar OpenESB, para que posteriormente veamos algunos ejemplos.

OpenESB, un proyecto open source que implementa un motor Enterprise Service Bus (ESB) basado en la especificación Java Business Integration (JBI). Un ESB es una pieza clave en las Arquitecturas Orientadas a Servicios (SOA).

Pre Requisitos:
Se requiere haber instalado JDK, según los apuntes de instalación tengamos en cuenta lo siguiente:

Si tienes JDK 5, debe ser una verión mayor o igual a 1.5.0_14
ó
Si JDK 6, debe ser una verión mayor o igual a 1.6.0_10, excepto 1.6.0_13 y 1.6.0_14 debido a incompatibilidades con los editores visuales de diseño de proyectos.

Si aún no tienes instalado JDK puedes entrar a este link para ver como hacerlo.

Instalación:

Descargamos en la página oficial de OpenESB la última versión aquí https://open-esb.dev.java.net/Downloads.html.
Vemos que hay 2 formas de descargarlo:
Full Install: Esta forma contiene GlassFish y NetBeans con los plugins suficiente para iniciar a realizar trabajos de SOA.
Components only:Esta versión solo contiene el ESB sin GlassFish y Netbeans, los cuales los debes tener ya instalado y con sus plugins para que soporte componentes SOA.

En esta ocación recomiendo descargar la versión Full Install para no tener problemas en la hora de buscar los plugins e integrarlo con el GlassFish.

 

Esperemos que descarge e instalamos.

 

Si pulsamos en el botón Customize veremos más claramente los componentes a instalar: el GlassFish ESB DesignTime, que corresponde con NetBeans 6.7.1 con plugins SOA; y GlassFish ESB Runtime, que es el servidor GlassFish con JBI integrado y configurado.



Luego nos pide la ruta donde instalar y la ruta del JDK, esto es importante validar para poder seguir la instalación.


Luego nos pide una serie de configuraciones para los puertos, estos números de puertos nos proporcionan por default. Podemos cambiarlo si es necesario.


Luego nos proporcinan una interfaz de validación de todo lo que hemos hecho anteriormente.


Instalamos y esperamos.


Última pantalla de finalización de la instalación.

 

Y listo, ahora tenemos OpenESB listo para usarlo en nuestro computador.

Abrimos el GlassFish ESB y escogemos nuevo proyecto en la opción SOA:

Los tipos de proyectos que podremos diseñar e implementar son:

Composite Application. En un proyecto de este tipo simplemente añadimos otros proyectos SOA y de servicios web. Cada proyecto incluido se denomina componente o módulo, y son desplegados juntos en el contenedor JBI. Su interacción en runtime implementará una funcionalidad de negocio de SOA.
BPEL Module. Los procesos de negocio que involucran varios servicios web u otros recursos pueden modelarse gráficamente y luego ejecutarse a través de un módulo BPEL. Su capacidad y propósito son mucho más limitados que un BPM, su finalidad es la orquestación de servicios para realizar composición de éstos, práctica esencial en SOA.
XSLT Module. Una de las capacidades de un ESB es la transformación de los mensajes XML que se enrutan a través del Bus. Las transformaciones de un tipo de XML a otro se realizan mediante XSLT, y este módulo nos permite hacerlo.
Data Mashup Module. Consiste en combinar varias fuentes de datos (hojas de cálculo, ficheros, bases de datos, servicios, etc) y presentarlo al servicio consumidor en un formato normalizado, como si fuese un único recurso (e.g., como tablas de base de datos). El ESB hace las tareas de composición de los datos y gestiona sus orígenes, de manera transparente al consumidor que únicamente se centra en su lógica sobre ellos.

Bueno pronto haremos un ejemplo de como utilizar este producto.

sábado, 6 de marzo de 2010

Exportar de JSP a Excel (Table to Excel Java)

Una Forma rápida y fácil de obtener un excel a partir de un jsp puede ser de la siguiente manera:
Sólo agregando en la cabecera del documento

    response.setContentType ("application/vnd.ms-excel");
    response.setHeader ("Content-Disposition", "attachment;filename=\"report.xls\"");



Podemos comprenderlo mejor con el siguiente Ejemplo.


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

    pageEncoding="ISO-8859-1"%>

<%

    response.setContentType ("application/vnd.ms-excel"); //Tipo de fichero.

response.setHeader ("Content-Disposition", "attachment;filename=\"report.xls\"");

%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Insert title here</title>

</head>

<body>

<TABLE border="1">

<TR>

<TH>CICLO</TH>

<TH>CODIGO</TH>

<TH>APELLIDOS Y NOMBRES</TH>

</TR>

<TR>

 <TD>1</TD>

   <TD>12233</TD>

   <TD>JocLuis</TD>

</TR>



</TABLE>

</body>

</html>

viernes, 5 de marzo de 2010

Comprobar una expresión XPath online

Si quieres comprobar al extraer valores de tu elemento que contenga cualquier esquema XML puedes hacerlo en XPath Expression Testbed .

La página te permite subir tu propio esquema y probar en online expresiones, como también te permite hacer ejemplos con un esquema de prueba, que mostramos acontinuación:

<?value="2"?> 
<parent name="data" > 
   <child id="1"  name="alpha" >Some Text</child> 
   <child id="2"  name="beta" > 
      <grandchild id="2.1"  name="beta-alpha" ></grandchild> 
      <grandchild id="2.2"  name="beta-beta" ></grandchild> 
   </child> 
   <pet name="tigger"  type="cat" > 
      <data> 
         <birthday month="sept"  day="19" ></birthday> 
         <food name="Acme Cat Food" ></food> 
      </data> 
   </pet> 
   <pet name="Fido"  type="dog" > 
      <description> 
         Large dog! 
      </description> 
      <data> 
         <birthday month="feb"  day="3" ></birthday> 
         <food name="Acme Dog Food" ></food> 
      </data> 
   </pet> 
   <rogue name="is this real?" > 
      <data> 
         Hates dogs! 
      </data> 
   </rogue> 
   <child id="3"  name="gamma"  mark="yes" > 
      <!-- A comment --> 
      <description> 
         Likes all animals - especially dogs! 
      </description> 
      <grandchild id="3.1"  name="gamma-alpha" > 
         <[CDATA[ Some non-parsable character data ]]> 
      </grandchild> 
      <grandchild id="3.2"  name="gamma-beta" ></grandchild> 
   </child> 
</parent> 



El cual podemos hacer las siguiente operaciones:

-Acceder a un valor del NAME del CHILD con ID=1.
Bueno esto se escribirá de la siguiente manera:
/parent/child[@id='1']/@name
Como muestra la imagen siguiente.

-Para recorrer por ejemplo todos los CHILD solo ponemos entre corchetes el número de campos.
Para /parent/child[1]/@name el Resultado es alpha.
Para /parent/child[2]/@name el Resultado es beta.

Y así sucesivamente, el cual lo podemos idear con un simple While.

martes, 23 de febrero de 2010

Exportar a XML una tabla de MYSQL

Sólo es factible para versiones mayores de 5.1 de MySQL

Método 1


shell>mysql -u USUARIO -pCLAVE --xml -e "select * from NOMBRETABLA;" NOMBRE_BD

Ejemplo:
mi usuario mysql:root
mi clave:root
tablaname:producto
nombre BD:sgc


shell>mysql -u root -proot --xml -e "select * from producto;" sgc

Si deseas guardarlo en un directorio, solo agregaríamos el siguiente código:


shell>mysql -u root -proot --xml sgc -e "select * from producto" > /tmp/producto.xml

Método 2


Este código ahora si lo puedes hacer luego de loguearte al mysql(cosa que no hacíamos en el anterior método):

Estructura de la tabla:

PRODUCT
-----------
colum1
colum2
colum3

Hacemos un siemple query:

-he tenido problemas para poder poner el código del query-Lo adjunto aquí

Saludos


Tip:Siempre cuando vas a exportar se va cortar tu documento es recomendable crecer el tamaño del valor de group concat de la siguiente manera:
SET GLOBAL group_concat_max_len =16384 ;

Llamar comandos Shell o del sistema desde Java

Alguna vez han pensado hacer llamados del sistemas(códigos shell) desde Java.
Aquí les dejo un curioso código.


public static void main(String args[]) {

String s = null;

try {

// Determinar en qué SO estamos
String so = System.getProperty("os.name");
String comando;
// Comando para Linux
if (so.equals("Linux"))
comando = "ifconfig";
// Comando para Windows
else
comando = "ipconfig";

// Ejcutamos el comando
Process p = Runtime.getRuntime().exec(comando);

BufferedReader stdInput = new BufferedReader(new InputStreamReader(
p.getInputStream()));

BufferedReader stdError = new BufferedReader(new InputStreamReader(
p.getErrorStream()));

// Leemos la salida del comando
System.out.println("Ésta es la salida standard del comando:\n");
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}

// Leemos los errores si los hubiera
System.out.println("Ésta es la salida standard de error del comando (si la hay):\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}

System.exit(0);
} catch (IOException e) {
System.out.println("Excepción: ");
e.printStackTrace();
System.exit(-1);
}
}


Pd:El link donde lo obtuve no recuerdo bien, pero si alguien lo encuentra bienvenido sea :D

viernes, 22 de enero de 2010

Crear EXE de un JAR (jar to exe)

Si alguna vez desean crear un compilable .exe desde un .jar, este tutorial de Domínguez Geniz Amalio Javier les puede ayudar.

Descargar el tutorial

domingo, 10 de enero de 2010

Incrementar o Disminuir dias a una fecha con Java

Les dejo un código que tal vez en algún momento les sirva de ayuda con las fechas.
Solo aplicando el método ADD a la fecha podemos incrementar o disminuir "X" o "-X" dias a la fecha.

Calendar fecha = Calendar.getInstance(); // obtiene la fecha actual
System.out.println(fecha.getTime()); //Imprimimos la fecha actual
fecha.add(Calendar.DATE, 23); //Incrementando 23 dias a la fecha
System.out.println(fecha.getTime()); //Fecha Incrementada
System.out.println(fecha.getTime().getDate()); //Imprimiento el dia
System.out.println(fecha.getTime().getMonth()+1);//Imprimiento el mes
System.out.println(fecha.getTime().getYear()+1900);//Imprimiento el año

Notese que al momento de querer saber el mes en entero, el dia y el año; le sumamos unas cantidades para que nos salgan generales.(es por una desfase que pasa al obtener enero por ejemplo nos sale 0 y diciembre 11; entonces sumamos 1 para que se ponga en fase.De la misma forma para el año.)