Desarrollo de aplicación de facturación en 15 minutos con openxava 2/2

En el post anterior vimos como configurar todo el entorno para crear nuestra primera aplicación en Openxava.

Ahora vamos a escribir entidades. En realidad deberíamos pensar un poco y diseñar el modelo de como sería la aplicación. En este caso nos hemos basado en el libro “Aprende Java con ejemplos” de Javier Paniza (Aquí los primeros capítulos)

Crear la primera entidad

Para desarrollar la aplicación solo hay que añadir entidades.

Lo primero es crear un paquete para que contenga las clases del modelo, para ello hacemos clic derecho sobre la carpeta src del proyecto invoicing y New -> Package, ponemos como nombre del paquete “org.openxava.model.invoicing.model” y finish

Ahora es cuando creamos una simple clase Java llamada Customer

Ahora solo tenemos que escribir código, para decirle a Openxava que esto es una entidad usamos la anotación @Entity

Aquí tenemos el código http://pastebin.com/g06PxfQu

Configurar persistence.xml

Lo que vamos a hacer ahora es unir la BD con la aplicación web. Para ello modificaremos el archivo persistence.xml que esta dentro de la carpeta Invoicing/persistence/META-INF

Lo primero que hacemos es comentar la configuración anterior “Tomcat + Hypersonic” y “JUnit Hypersonic”

Y escribimos esto:

Aquí dejo el código http://pastebin.com/smyvqfdd

Configurar updateSchema

Para que cada vez que hagamos un cambio en la estructura del modelo, ya sea creando entidades, propiedades persistentes, referencias… vamos a necesitar actualizar el esquema de la BD. Por ejemplo ahora necesitamos crear la tabla Customer.

Lo primero es descargarnos el controlador JDBC de PostgreSQL disponible aquí http://jdbc.postgresql.org/download.html y copiarlo e la carpeta lib de tomcat

Después editamos el archivo Invoicing/build.xml, Openxava trae por defecto tareas en Ant para poder actualizar el esquema, solo hay que escribir la rita del archivo que hemos creado copiado antes.

<target name="actualizarEsquema">
 <ant antfile="../OpenXava/build.xml" target="updateSchemaJPA"> 
 <property name="persistence.unit" value="junit"/>
 <property name="schema.path" value="RUTA \tomcat\lib\postgresql-9.2-1001.jdbc4.jar"/>
 </ant>
 </target>

**RUTA ES la ruta hacia el servidor Tomcat, es decir, la carpeta donde hemos descomprimido OPENXAVA

Ya solo queda probar que todo esta correcto, si no aparece esta imagen, solo debemos posicionarnos sobre build.xml y pinchar sobre “Run As… -> Anf file” y seleccionamos la opción de actualizar esquema:

Ejecutar la aplicación

Como ultimo paso solo nos queda arrancar Tomcat y a correr.

Para probarla entramos aquí: http://localhost:8080/Invoicing/xava/module.jsp?application=Invoicing&module=Customer

Aunque es un poco difícil de configurar en un principio, ya podemos crear aplicaciones de manera rápida y sencilla, con solo una clase Java

Ahora creamos una nueva entidad llamada Producto

Para que los cambios surtan efecto actualizamos el esquema (Run As-> Invoicing Build)

Y con solo presionar CRTL+b tenemos el proyecto construido, para probarlo:

http://localhost:8080/Invoicing/xava/module.jsp?application=Invoicing&module=Procuct

tachán:

Ya tenemos la versión 0.1 de Invoicing funcionando, ahora solo queda modelar un poco la aplicación y unir unas clases más.

Referencias

– https://sites.google.com/site/marcelbaumann/os-projects/CRUD-Applications

https://sourceforge.net/projects/openxava/forums/forum/437013/topic/5526600

 

Actualización

Aquí la parte 1: https://jesuslc.com/2012/12/30/desarrollo-de-aplicacion-de-facturacion-en-15-minutos-con-openxava/

Anuncios

8 comentarios en “Desarrollo de aplicación de facturación en 15 minutos con openxava 2/2

  1. Buen Día, estoy haciendo el mismo ejemplo de Invoicing pero usando MySql y puedo generar la tabla y todo, pero cuando trato de abrir la aplicación me da un error.

    Me gusta

  2. Buenas, estoy siguiendo tu tutorial paso a paso y al compilar me da un error.

    Buildfile: C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\build.xml
    desplegarWar:
    createDist:
    init:
    updateDataSourceInfo:
    configureJNDI:
    prepareWar:
    [copy] Copying 700 files to C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\xava
    [copy] Copying 48 files to C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF
    createWebXml:
    [loadfile] C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\servlets.xml doesn’t exist
    [loadfile] C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\filters.xml doesn’t exist
    [loadfile] C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\listeners.xml doesn’t exist
    [copy] Copying 1 file to C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF
    init:
    copyDTDs:
    copyXavaDTDs:
    [copy] Copying 20 files to C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\xava\dtds
    copyComponentDTDs:
    filterXavaFiles:
    filterHibernateFiles:
    filterI18n:
    updateDataSourceInfo:
    filter:
    createEditorsJS:
    [copy] Warning: Could not find file C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\classes\Invoicing-messages_en.properties to copy.
    [copy] Warning: Could not find file C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\classes\Invoicing-labels_en.properties to copy.
    [copy] Warning: Could not find file C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\classes\MensajesInvoicing_en.properties to copy.
    [copy] Warning: Could not find file C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\classes\EtiquetasInvoicing_en.properties to copy.
    deploy:
    [copy] Copying 749 files to C:\Program Files\Java\openxava-4.8.1\tomcat\webapps\Invoicing
    actualizarOX:
    updateOX:
    copyDTDs:
    copyXavaDTDs:
    [copy] Copying 20 files to C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\xava\dtds
    copyComponentDTDs:
    [copy] Copying 700 files to C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\xava
    [copy] Copying 48 files to C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF
    createWebXml:
    [loadfile] C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\servlets.xml doesn’t exist
    [loadfile] C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\filters.xml doesn’t exist
    [loadfile] C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\listeners.xml doesn’t exist
    [copy] Copying 1 file to C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF
    actualizarEsquema:
    defineHibernateTool:
    updateSchemaJPA:
    [hibernatetool] Executing Hibernate Tool with a JPA Configuration
    [hibernatetool] 1. task: hbm2ddl (Generates database schema)
    [hibernatetool] SLF4J: Class path contains multiple SLF4J bindings.
    [hibernatetool] SLF4J: Found binding in [jar:file:/C:/Program%20Files/Java/openxava-4.8.1/workspace/OpenXava/web/WEB-INF/lib/slf4j-jdk14.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    [hibernatetool] SLF4J: Found binding in [jar:file:/C:/Program%20Files/Java/openxava-4.8.1/workspace/Invoicing/web/WEB-INF/lib/slf4j-jdk14.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    [hibernatetool] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    [hibernatetool] oct 30, 2013 8:49:56 AM org.hibernate.annotations.common.Version
    [hibernatetool] Información: Hibernate Commons Annotations 3.2.0.Final
    [hibernatetool] oct 30, 2013 8:49:56 AM org.hibernate.cfg.Environment
    [hibernatetool] Información: Hibernate 3.6.10.Final
    [hibernatetool] oct 30, 2013 8:49:56 AM org.hibernate.cfg.Environment
    [hibernatetool] Información: hibernate.properties not found
    [hibernatetool] oct 30, 2013 8:49:56 AM org.hibernate.cfg.Environment buildBytecodeProvider
    [hibernatetool] Información: Bytecode provider name : javassist
    [hibernatetool] oct 30, 2013 8:49:56 AM org.hibernate.cfg.Environment
    [hibernatetool] Información: using JDK 1.4 java.sql.Timestamp handling
    [hibernatetool] oct 30, 2013 8:49:56 AM org.hibernate.ejb.Version
    [hibernatetool] Información: Hibernate EntityManager 3.6.10.Final
    [hibernatetool] [Fatal Error] :19:9: La cadena “–” no está permitida en los comentarios.
    [hibernatetool] An exception occurred while running exporter #2:hbm2ddl (Generates database schema)
    [hibernatetool] To get the full stack trace run ant with -verbose
    [hibernatetool] Problems in creating a configuration for JPA. Have you remembered to add hibernate EntityManager jars to the classpath ?
    [hibernatetool] java.lang.reflect.InvocationTargetException
    [hibernatetool] javax.persistence.PersistenceException: Invalid persistence.xml.
    [hibernatetool] Error parsing XML (line19 : column 9): La cadena “–” no está permitida en los comentarios.
    [hibernatetool]

    BUILD FAILED
    C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\build.xml:48: The following error occurred while executing this line:
    C:\Program Files\Java\openxava-4.8.1\workspace\OpenXava\build.xml:1012: Problems in creating a configuration for JPA. Have you remembered to add hibernate EntityManager jars to the classpath ?

    Me gusta

    1. Segun veo en el log que has mandado parece que Hibernate no entiende comentarios con “-”
      ¿Has seguido las 2 partes del tutorial?
      Parece que el archivo persistence.xml. tiene caracteres extraños.

      avax.persistence.PersistenceException: Invalid persistence.xml.
      [hibernatetool] Error parsing XML (line19 : column 9): La cadena “–” no está permitida en los comentarios.
      [hibernatetool]

      Me gusta

Comenta la entrada

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s