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.

Montar unidades de Windows desde ubuntu

Se puede montar una unidad de red de windows desde Ubuntu para accesar a ella como si fuera una carpeta mas.

Se realiza mediante el comando mount. La sintaxis es:

	
sudo mount -t cifs //pc/unidad /mntwin -o username=dominio/usuario,password=pass,uid=1000,umask=777

donde,

  • pc. Nombre de la maquina o IP de la maquina.
  • unidad. Nombre de la unidad compartida en la maquina.
  • dominio/usuario. Usuario con dominio que tiene permisos sobre la unidad.
  • pass. Contraseña del usuario.

uid es el numero unico del usuario.

umask son los permisos que tendran los archivos.

Por ejemplo:

	
sudo mount -t cifs //pcwin7/parax /mntwin -o username=pcwin7/usuario1,password=12345678,uid=1000,umask=777

Si lo ejecutamos desde la consola:

montar

montar

Mediante el comando df -h podemos ver si se monto correctamente.

df -h

df -h

Y podemos pasar a la carpeta correspondiente y ver su contenido:

Pasarse a la carpeta

Pasarse a la carpeta

Ver por nombre maquina de Windows desde Linux

    En algunas ocasiones no se puede accesar por nombre, a una máquina con Windows, desde linux. Solamente por IP se tiene acceso, la razón es que no se resuelve correctamente el DNS1. Por ejemplo si enviamos un «ping» desde linux a una maquina Windows nos regresa como respuesta que  es desconocida.
ping por nombre sin respuesta

ping por nombre sin respuesta

 

   Como primer paso debemos obtener la IP y el nombre de la maquina de Windows. Se puede hacer de varias maneras pero yo utilizo los comandos «hostname« y «ipconfig« desde la consola.
Nombre de la maquina

Nombre de la maquina

 

Ip de la maquina Windows

IP de la maquina Windows

 

    Con esta información desde el Sistema Linux debemos accesar con permisos de modificación al archivo «hosts» que se encuentra en la ruta «/etc/». Escribimos la IP presionamos el tabulados y escribimos el nombre de la maquina de Windows. Guardamos los cambios.
Archivo hosts

Archivo hosts

 

    Para asegurar que se ve la maquina de Windows por nombre enviamos otro ping. La respuesta nos debe indicar que el acceso es correcto
ping correcto

ping correcto

 

NOTAS:
1. Asociar nombres en lenguaje normal (PCWIN7) con direcciones numéricas (192.168.2.239).

Porcentaje ocupado por FileSystem

El comando df en Linux sirve para obtener información del FileSystem (Sistema de archivos). Con el podemos ver los FileSystem que están montados y su espacio libre. Con la opción -h se muestran los tamaños en formato legible para las personas.

df-h

FileSystem actuales

Usando awt podemos realizar un filtrado por porcentaje, para mostrar solo aquellos FileSystem que estén llegando al limite. Por ejemplo si necesitamos conocer los FileSystem que estén a mas del 90% de su capacidad, ejecutamos:

	 df -h | awk '$5>90 { print $0}'
FileSystem con mas de 90% de espacio ocupado

FileSystem con mas de 90% de espacio ocupado

El cual significa, Se imprimen todas las columnas del resultado del comando df  -h, cuando el valor de la columna 5 sea mayor a 90.

 

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.

 

Conexion a Internet por Proxy desde la consola de ubuntu

     En Ubuntu y cualquier distribución de Linux, la consola permite un mayor control de funciones y configuración del equipo, con respecto al entorno gráfico.

     Por lo cual se hace indispensable que tenga salida a Internet. Esto se logra con los siguientes pasos (Los cambios se deben realizar con un usuario facultado) .

1. Configuramos de forma manual el proxy de Ubuntu, aplicando a todo el Sistema, dando clic en el botón Aplicar a todo el Sistema.

Proxy manual en Ubuntu

Proxy manual en Ubuntu

2. En la ubicación /etc/apt/ editamos el archivo apt.conf.
3. Reemplazamos el contenido del archivo apt.conf por

Acquire::http::proxy «http://dominio\usuario:contraseña@ip:puerto/»;
Acquire::ftp::proxy «ftp://dominio\usuario:contraseña@ip:puerto/»;
Acquire::https::proxy «https://dominio\usuario:contraseña@ip:puerto/»;
Acquire::socks::proxy «socks://dominio\usuario:contraseña@ip:puerto/»;

donde,
     dominio: Dominio del usuario para autentificarse en el proxy
     usuario: Usuario para autentificarse en el proxy
     contraseña: Contraseña para autentificarse en el proxy
     ip: Dirección IP del proxy
     puerto: Puerto del proxy

Editando apt.conf

Editando apt.conf

4. Guardamos el archivo y comprobamos que funciona ejecutando en la consola un comando que requiera salida a Interner, por ejemplo, apt-get update, el cual sirve para actualizar los repositorios de los paquetes de Ubuntu.

Ejecutando apt-get update

Ejecutando apt-get update