Java EE 5. Crear Base de Datos MySQL

Vamos a crear una Base de Datos muy sencilla para continuar con el desarrollo JEE.

Crear modelo en MySQL Workbench

Abrimos MySQL Workbench y seleccionamos la instancia local.

Selección_153

Pedirá la contraseña que seleccionamos en la instalación pasada.

Selección_154

En la pantalla principal ir a File -> New Model.

Selección_155

Doble Clic en Add Diagram.

Selección_156

Crear las tablas y sus relaciones

Aquí ya podemos agregar las tablas de la Base de Datos. Damos clic en Place a New Table. y con otro clic sobre el espacio de trabajo se creara la tabla.

Selección_175

Doble clic en la tabla y se mostraran su propiedades en la parte inferior. Seleccionamos el nombre Usuarios.

Selección_159

Y en la pestaña Columns agregamos los campos id, user y password.

Nombre Tipo de dato Clave primaria No acepta null
id INT Si Si
user VARCHAR(10) No No
password VARCHAR(10) No No

Selección_164

Ahora creamos la tabla Logins_users.

Nombre Tipo de dato Clave primaria No acepta null
id INT Si Si
date DATETIME No No
status VARCHAR(5) No No

Selección_166

Relacionamos la tablas de 1 a muchos. Damos clic en Place a New 1:n Non-Identifying.

Selección_167

Clic en la tabla Logins_users y finalmente clic en la tabla Users.

Selección_168

Generar Base de Datos

Ya tenemos nuestro modelo ahora vamos a crear la Base de Datos; Database -> Forward Engineer… Seleccionamos la instancia Local y la contraseña. Clic en Next.

Selección_169

Todo predeterminado y clic en Next.

Selección_170

Debe estar habilitado Export MySQL Table Object. Clic en Next.

Selección_171

Se muestra el script de creación. Clic en Next.

Selección_172

Clic en Close.

Selección_173

Desde la pestaña de la instancia seleccionamos el esquema mydb  y ejecutamos los querys:

select * from Users;
select * from Logins_users;

En la parte inferior se debe mostrar que las consultas fueron exitosas, indicando que las tablas ya existen.

Selección_174

 

Java EE 4. Configurar Proyecto

Archivo pom.xml

El archivo pom (Project Object Model) es la unidas principal de un proyecto Maven que contiene información acerca del proyecto, fuentes, test, dependencias, plugins, version, etc.

Cambiar archivo pom.xml la versión más actual

Abrir el archivo en eclipse e ir a la sección build. Lo valores de source y target se deben cambiar a 1.8.

pom

El proyecto marcara un error.

Clic con el botón derecho en el proyecto seleccionar Properties y luego Project Facets. la opción Java debe estar habilitada con la versión 1.8. Apply y OK.

pom2

Clic con el botón derecho en el proyecto seleccionar Maven y luego Update Project… Seleccionar el proyecto y OK.

pom3

El error en el proyecto desaparece.

En la sección de dependencias se muestra:

Selección_121

Vamos a actualizar a las versiones más recientes de los componentes web:

Dependencia para javax.servlet

Ir al link http://mvnrepository.com/ el cual es el repositorio oficial de Maven. Escribir javax.servlet y Search. Se muestran las coincidencias, seleccionar Java Servlet API.

Selección_122

Lo recomendable es elegir el release mas reciente. Clic en 3.1.0.

Selección_123

Muestra la dependencia correspondiente en la sección de Maven. Remplazamos la dependencia en el archivo pom.xml.

Selección_124

Dependencia para javax.servlet.jsp

En el repositorio de Maven buscar javax.servlet.jsp y seleccionar JavaServlet  Pages(TM) API. La ultima versión disponible es la 2.2.

Selección_127

Copiar la dependencia y reemplazarla en pom.xml. El resultado es:

Selección_128

Actualizar descriptor de despliegue

Abrir el archivo web.xml que se encuentra en la ruta nombreDelProyecto/scr/main/webapp/WEB-INF/ dentro del proyecto. La rama <web-app> la reemplazamos por:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
		 http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

Selección_129

Activar Dynamic Web Module

Con esta opción cuando creamos un servlet no se agregan en el descriptor de despliegue (web.xml) y podemos utilizar las anotaciones. Clic derecho en el proyecto -> Properties -> Project Facets -> Dynamic Web Module.

Selección_130

Dependencia para JPA

Desde el repositorio de Maven buscar eclipseLink, seleccionar EclipseLink JPA. Seleccionar el ultimo release, que es 2.6.2. y agregarlo al archivo pom.xml en la sección de dependencies.

Selección_133

Dependencia para EJB

Desde el repositorio de Maven buscar javax.ejb, seleccionar  Ejb Api. Seleccionar el ultimo release, que es 3.0. y agregarlo al archivo pom.xml en la sección de dependencies.

Selección_136

Dependencia para MySQL

Desde el repositorio de Maven buscar mysql, seleccionar MySQL Connector/J. Seleccionar el ultimo release, que es 5.1.38. y agregarlo al archivo pom.xml en la sección de dependencies.

También descargar el jar y copiarlo en ../developer/deb/. El link esta en Artifact y se llama Download( JAR).

Selección_139

Dependencia para Validator

Permite agregar validaciones en los entitys.

Desde el repositorio de Maven buscar bean validator, seleccionar Bean validator API. Seleccionar el ultimo release, que es 1.1.0.Final. y agregarlo al archivo pom.xml en la sección de dependencies.

Selección_142

Dependencia para jstl

Para evitar usar Scriplets en el proyecto.

Desde el repositorio de Maven buscar jstl, seleccionar Jstl. Seleccionar el ultimo release, que es 1.2. y agregarlo al archivo pom.xml en la sección de dependencies.

Selección_145

Probar que todavía funciona el proyecto

Después de configurar el proyecto se debe validar que sigue funcionando.

  1. Clic derecho sobre el proyecto Run As -> 1. Run On Server
  2. Seleccionamos GlassFish. Clic en Next.
  3. Pasamos el proyecto a la ventana de Configured y clic en Finish.
  4. Se muestra la ventana de «hola mundo», lo cual indica que el proyecto se ejecuto correctamente.

Selección_146

Java EE 3. Instalar Base de Datos MySQL

Antecedentes

Para el proyecto vamos a utilizar la base de datos MySQL y MySQL workbench, que es una herramienta visual para el diseño de Base de Datos de MySQL.

Instalación de MySQL

Ir al link http://dev.mysql.com/downloads/mysql/  y descargar la versión correspondiente al Sistema Operativo y la arquitectura del procesador.

Para la instalación en Ubuntu, que es mi caso, lo más convenientes es instalarlo por apt.

  1. Descargar mysql-apt-config_x.x.x-x_all.deb desde el link http://dev.mysql.com/downloads/repo/apt/
  2. Ejecutarlo mediante linea de comandos:
    sudo dpkg -i mysql-apt-config_0.6.0-1_all.deb

    apt

  3. Seleccionar MySQL Server (mysql-5.7) y clic en Adelante.apt3
  4. Seleccionar mysql-5.7 y clic en Adelante. Finalmente selecciona aplicar para que se instale.apt3
  5.  Desde la consola ejecute:
    sudo apt-get install mysql-server

    Capture S.

    apt4

  6. Seleccione la contraseña para el usuario root.apt5
  7. Confirme la contraseña para el usuario root..apt6
  8. Después de unos momentos se instala la Base de Datos.apt7
  9. Para probar que MySQL se esta ejecutando correctamente podemos ejecutar:
    sudo service mysql status

    apt8Otro comando útiles son:

    sudo service mysql stop
    
    sudo service mysql start

Instalación de MySQL Workbench

Ir al link http://dev.mysql.com/downloads/workbench/  y descargar la versión correspondiente al Sistema Operativo y la arquitectura del procesador.

  1. Para el caso de Ubuntu se descargar el archivo mysql-workbench-community-6.3.6-1ubu1404-amd64.deb. Clic en el archivo para ejecutarlo. Desde el Centro de software de Ubuntu clic en instalar.apt9
  2. Después de unos momentos se mostrara que la instalación fue correcta.apt10
  3. Al ejecutar la aplicación reciente instalada nos muestra la siguiente ventana. Aquí se ve la instancia del servidor MySQL que acabamos de instalar.apt11
  4. Al dar clic sobre la instancia nos pedirá la contraseña del root y entraremos a la pantalla principal de MySQL Workbench.apt12

 

Instalar plug-in GlassFish Tools en Eclipse

Instalar plug-in GlassFish Tools en Eclipse

Antecedentes

Tenemos Eclipse Luna y deseamos instalar el plug-in GlassFish Tools para instalar GlassFish como Servidor de Aplicaciones.

Modo 1. Instalar por Marketplace

Dentro de Eclipse ir a:

Help -> Eclipse Marketplace… -> Search

Escribimos glassfish y presionamos el botón Go. Cuando nos muestre  GlassFish Tools damos clic en Install.

glassfishTools

Habilitamos todo y clic en Confirm.

glassfishTools2

Aceptamos la licencia y clic en Finish.

glassfishTools3

Cuando termine  de instalar nos pedirá reiniciar Eclipse. Clic en Yes.

glassfishTools4

Modo 2. Instalar por Install New Software…

Dentro de Eclipse ir a:

Help -> Install New Software…

Clic en Add..

pluginsGlassFish

Escribir un nombre y la URL

http://download.oracle.com/otn_software/oepe/luna

Clic en OK.
Selección_110

Seleccionar Tools y habilitar GlassFish Tools. Clic en Next.

Selección_111

Clic en Next >.

Selección_112

Aceptar la licencia y Finish.

Selección_113

 Finalmente reiniciar Eclipse con clic en Yes.

Selección_114

Errores

Si se muestra algún tipo de error, principalmente en Windows, lo más seguro es que sea la referencia al JDK de Java. De acuerdo al link https://marketplace.eclipse.org/content/glassfish-tools se pueden aplicar la siguiente solucion:

  1. Verificar que la versión de Java sea la correcta, de acuerdo a la tabla:
    Versión de Eclipse Versión mínima de Java
    Mars Java 8
    Luna Java 8
    Kepler Java 7
    Juno Java 6
  2. Ir a Help -> About Eclipse -> Installation Details -> Configuration y Buscar la linea inmediatamente despues de -vm, esta debe mostrar la ruta donde esta instalado el JDK con la versión correcta. Por ejemplo en Ubuntu muestra. Selección_115
  3. Si no tiene la ruta del JDK correcto se debe de modificar el archivo eclipse.ini que se localiza en …/developer/ide/eclipse y agregar las lineas:
    -vm
    ruta del JDK

    Por ejemplo:

    -vm
    C:\Archivos de programa\Java\jdk1.8.0_40

     

 

Java EE 2. Configurar Eclipse

Introducción

En Java existe una cantidad enorme de librerías que podemos reutilizar para nuestros proyectos, Maven nos proporciona la facilidad de gestionar estas librerías para manejar versiones y dependencias, así como empaquetar y distribuir el proyecto. Para mas detalles: http://www.genbetadev.com/java-j2ee/que-es-maven.

Eclipse ya integra Maven y su uso lo hace muy sencillo. El proyecto Java EE que crearemos será un proyecto Maven

Configurar Eclipse

1. Seleccionar workspace

Al abrir Eclipse por primera vez debemos seleccionar la ruta ../developer/ide/workspace

workspace

2. Crear Archetypes de Maven

Dentro de Eclipse ir a:

Windows -> Preferences -> Maven -> Archetypes

archetype

Clic en el botón Add Remote Catalog.. En el campo Catalog File:  copiamos la ruta: http://repo.maven.apache.org/maven2/archetype-catalog.xml y clic en el botón OK.

archetype2

Se muestra la nueva ruta de Archetypes agregada.

archetype2_1

NOTA: Esta ruta se puede obtener de la pagina oficial de Maven https://maven.apache.org/https://maven.apache.org/archetype/archetype-models/archetype-catalog/archetype-catalog.html

archetype3

3. Configurar el servidor de aplicaciones en Eclipse

Instalar las herramientas de Glassfish.

Dentro de Eclipse ir a:

Help -> Eclipse Marketplace… -> Search

Escribimos glassfish y presionamos el botón Go. Cuando nos muestre  GlassFish Tools damos clic en Install.

glassfishTools

Habilitamos todo y clic en Confirm.

glassfishTools2

Aceptamos la licencia y clic en Finish.

glassfishTools3

Cuando termine  de instalar nos pedirá reiniciar Eclipse. Clic en Yes.

glassfishTools4

NOTA: Si  se muestra un error al instalar el plug-in se puede intentar lo siguiente. https://arieloliva.com/error_glassfish_tools_eclipse/

Configurar GlassFish.

Después de reiniciar Eclipse, seleccionamos la pestaña Servers y clic en No servers are available. Click this link to create a new server…

server

Seleccionamos GlassFish 4 y el nombre del servidor. Presionamos Next.

server2

Seleccionamos la ruta ../developer/server/glassfish4/glassfish donde previamente se descomprimimos el servidor de aplicaciones GlassFish. Clic en Next.

server3

Dejamos el password en blanco y clic en Finish.

server4

Se muestra el servidor. Clic derecho y seleccionamos Start. El servidor debe levantarse.

server6

 

4. Crear proyecto Maven

Dentro de Eclipse ir a:

File -> New -> Other -> Maven -> Maven Project  Next

maven

 Default workspace y clic en Next.

maven2

Escribimos en Filter: J2EE, esperamos a que muestre los Archetype y seleccionamoa webapp-j2ee14 versión 1.3. Clic en Next.

maven3

Escribimos,
 Group Id: paquete inicial del proyecto
 Artifact Id: Nombre del proyecto
Versión: Versión del sistema a desarrollar (1.0.0). Clic en Finish.

maven4

 Clic derecho sobre el proyecto Run As -> 1. Run On Server

maven5

Seleccionamos GlassFish. Clic en Next.

maven6

Pasamos el proyecto a la ventana de Configured y clic en Finish.

maven7

Se muestra la ventana de «hola mundo». Lo cual indica que el proyecto se ejecuto correctamente

maven8

Java EE 1

Antecedentes

Después de programar por muchos años en java, llegue a pensar que dominaba todo el lenguaje, pero me sorprende ver que sólo lo he tocado superficialmente; que sólo utilizo una mínima parte y no he explotado el potencial que tiene. Por esta razón hoy tomo la decisión de profundizar más, específicamente en Java EE (Java Platform, Enterprise Edition). Para los cual iniciare una serie de artículos para implementar esta arquitectura en un proyecto, desde su instalación hasta la construcción de un sistema.

Generar ambiente

Se puede trabajar sobre Linux, Windows o Mac en lo personal me gusta mas Linux (Ubuntu), pero hay que considerar las versiones de las herramientas, así como los detalles específicos; manejo de rutas, tipos de ejecutables  .sh para Linux, .exe para Windows, etc.

Para generar el ambiente de trabajo requerimos lo siguiente.

1. Estructura de carpetas

Lo más conveniente es generar una estructura de trabajo como la siguiente:

Nivel 1 Nivel 2 Nivel 3 Descripción
developer Carpeta raíz
db Base de Datos y los drivers de conexión.
ide
eclipse Instalación de Eclipse
workspace Espacio de trabajo de Eclipse
server Servidor de aplicaciones

Por ejemplo:

estructuraCarpetas

Esta nos permite tener completamente organizado todo el ambiente de trabajo y ubicar perfectamente donde esta cada componente. Por ejemplo si quisiéramos pasarlo a otra maquina bastaría con copiar toda la estructura de carpetas.

2. Descargar las siguientes herramientas

  1. Eclipse.
  2. Glassfish.
  3. JDK 8 de Java.
  4. MySQL Community Server.
    • Link. http://dev.mysql.com/downloads/mysql/
    • Versión. Dependiendo de su Sistema Operativo.
    • Instalación. Descargar el archivo y ejecutarlo. Solo solicita la contraseña del usuario root.
  5. MySQL Workbench.

 

Crear con java documentos XML para timbrar CFDI

Introduccion

Para realizar el timbrado de Factura o Nominas se deben contruir documentos XML que cumplan con las especificaciones del SAT.

El SAT proporciona los esquemas de Factura y Nomina en documentos xsd. Con estos tenemos la posibilidad de comprobar que el documento XML cumple con la estructura requerida.

Los esquemas que proporciona, entre otro, son:

XMLBeans

XMLBeans es una tecnologia de Apache para tener acceso a un XML en lenguaje de Java. Mediante está, usamos directamente objetos Beans con sus set y get para contruir un documento XML.

Pasos para contruir XML con las especificaciones del SAT

  1. Descargar la ultima versión de XMLBeans http://www.apache.org/dyn/closer.cgi/xmlbeans/binaries
  2. Descomprimirlo en una carpeta
  3. Pasarse a la carpeta bin
  4. Ejecutar el comando scomp para obtener los jar respectivos. Es necesario tener java instalado:
    • Para Factura:
      scomp -compiler javac cfdv3.xsd -out cfdv3.jar

      Para obtener Código Fuente:

      scomp -src cfdv3 -compiler javac cfdv3.xsd -out cfdv3.jar
    • Para nomina:
      scomp -compiler javac nomina11.xsd -out nomina11.jar

      Para obtener Código Fuente:

      scomp -src nomina -compiler javac nomina11.xsd -out nomina11.jar
  5. Con esto obtenemos los jar que podemos importar a nuestro proyecto para usar sus métodos.

Dentro del proyecto

Dentro del proyecto podemos empezar a contruir el XML .

Comprobante comprobante = null;
comprobante.setVersion("3.2");
comprobante.setFolio("674566");
comprobante.setSello("");
comprobante.setFormaDePago("PAGO EN UNA SOLA EXHIBICION");
comprobante.setNoCertificado("");
comprobante.setCertificado("");
comprobante.setSubTotal(BigDecimal.valueOf(700.01).setScale(2));
.
.
.

Otros ejemplos:

Crear emisor

Emisor emisor = comprobante.addNewEmisor();
emisor.setNombre("Juan Penas");

Crear ubicación del emisor

TUbicacionFiscal ubicacionFiscal = emisor.addNewDomicilioFiscal();
ubicacionFiscal.setCodigoPostal("1023454");

Imprimir

File f = new File(RutaDelXml);
XmlOptions xmlOptions = new XmlOptions();
xmlOptions.setCharacterEncoding("UTF-8");
xmlOptions.setSavePrettyPrint();
xmlOptions.setSavePrettyPrintIndent(4);
comprobante.xmlText(xmlOptions);
comprobante.save(f);

Referencias

Las reglas  para construir el XML se pueden consultar en:

La ultima versión tiene fecha de mayo del 2015.

Conocer la versión y ruta de Java en linux

        Para conocer la versón y la ruta donde esta instalado Java, es suficiente con abrir una consola y ejecutar el comando: update-alternatives –config java

update-alternatives

update-alternatives

       Pueden existir varias versiones de Java, pero la que esta seleccionada con el asterisco es la que se encuentra actualmente activa. Pulsando el botón Enter finalizas el comando o puedes seleccionar un numero con la versión de java que desees activar.