domingo, 31 de julio de 2011

lunes, 25 de julio de 2011

EJB JPA - Ejemplos para descargar

A continuación se podrán descargar los ejemplos de EJB - JPA con transacciones que se vieron a lo largo  de los siguientes capítulos de este blog:

Descargas de ejemplos por  modulo (web, ejb y dominio)

Para levantar un entorno de trabajo con Eclipse + EJB3 + JPA + Hibernate para poder ejecutar estos ejemplos, ver: Tutorial JPA - Configuración Eclipse + JBoss + EJB3 + JPA + Hibernate
...

Asi nos deberia quedar el eclipse con el codigo fuente bajado e importado:








jueves, 14 de julio de 2011

JPA - Configuración Eclipse + JBoss + EJB3 + JPA + Hibernate

Este tutorial pretende explicar paso a paso como configurar un entorno de trabajo para empezar a trabajar con JBoss, EJB3, JPA, Hibernate y Eclipse.

Al final de este tutorial, encontrara los ejemplos de las entidades, EJBs,  servlets y datasource que se vieron a lo largo de todo este capitulo, listos para descargar.. 

Requisitos previos
  • Tener instalado y levantado una base de datos Oracle 10g/11g
  • Usuario / password de base de datos  
    • hibernate_tutorial / hibernate_tutorial 
  • Comandos para crear el usuario y password en la BD, necesarios para este tutorial:
    • drop user hibernate_tutorial cascade;
    • create user hibernate_tutorial identified by hibernate_tutorial;
    • grant DBA to hibernate_tutorial;

Descargas:
  • Descargar las librerias de Hibernate (en D:\APIS)
  • Descargar las librerias de OpenEjb (en D:\APIS)

Pasos para la configuración del entorno de desarrollo en el eclipse
  • Procedemos a crear un proyecto java simple (lo llamaremos ModelTutorial). Este proyecto/modulo tendra las entidades que luego los modulos EJB y Web podrán acceder.


  • Una vez creado el proyecto java, procedemos a configurar las librerías con las anotaciones de Hibernate, JPA y el driver de oracle. Todas estas librerias seran tambien de gran utilidad en caso que querramos hacer los test de las entidades creadas.



  • Agregar los JARs de Hibernate

  • Agregar los JARs a la libreria de usuario recientemente creada
    • Agregar todos los jars de D:\APIS\Hibernate\hibernate-distribution-3.3.1.GA\lib\required (menos el slf4j-api-1.5.2.jar) 
    • Agregar el jar de D:\APIS\Hibernate\hibernate-distribution-3.3.1.GA\hibernate3.jar
    • Agregar el jar de D:\APIS\Hibernate\hibernate-annotations-3.4.0.GA\hibernate-annotations.jar
    • Agregar el jar de D:\APIS\Hibernate\hibernate-annotations-3.4.0.GA\lib\hibernate-commons-annotations.jar
    • Agregar el jar de D:\APIS\Hibernate\hibernate-entitymanager-3.4.0.GA\hibernate-entitymanager.jar
    • Agregar el jar de D:\APIS\log4j\apache-log4j-1.2.16\log4j-1.2.16.jar
    • Agregar el jar de  D:\APIS\openejb\openejb-3.1.4\lib\javaee-api-5.0-3.jar
    • Agregar el jar de  D:\APIS\slf4j-1.5.8\slf4j-api-1.5.8.jar
    • Agregar el jar de  D:\APIS\slf4j-1.5.8\slf4j-simple-1.5.8.jar


  • Agregar el JAR del driver de ORACLE

  • Agregar el JAR de JUnit (que viene con el eclipse)




  • Mostramos todos los JARs agregados a este proyecto/modulo

  • Ahora procedemos a crear una entidad a modo de ejemplo (se llamara Referee)

  • Creamos el persistence.xml en el modulo/proyecto de EJB (EjbTutorial) dentro de la carpeta META-INF como muestra la siguiente captura  IMPORTANTE: No colocar el persistence.xml dentro del modulo/proyecto ModelTutorial ya que cuando vamos a querer inyectar el persistenceContext (EntityManager) en el EJB nos va a tirar un error que no encuentra el mismo. En el unico lugar que debería ir es en el modulo de EJB.
  • Ahora vamos a configurar la dependencia entre el modulo EJB (EjbTutorial) con el modulo de dominio (ModelTutorial).







<persistence
 xmlns="http://java.sun.com/xml/ns/persistence"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
 http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
 version="1.0">

    <persistence-unit name="examplePersistenceUnit" transaction-type="JTA">    
      <provider>org.hibernate.ejb.HibernatePersistence</provider>    
      <jta-data-source>java:/TutorialDS</jta-data-source>


      <!-- Oracle DB -->
        <properties>
          <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
            <property name="hibernate.dialect"
                      value="org.hibernate.dialect.Oracle9Dialect"/>  
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>              
    </persistence-unit>
</persistence>

  • Ahora procedemos a crear el datasource (con todos los datos de conectividad a la BD). Lo llamaremos oracle-ds.xml
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
    <local-tx-datasource>
        <jndi-name>TutorialDS</jndi-name>
        <connection-url>jdbc:oracle:thin:@localhost:1521:xe</connection-url>
        <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
        <user-name>hibernate_tutorial</user-name>
        <password>hibernate_tutorial</password>
        <valid-connection-checker-class-name>
              org.jboss.resource.adapter.jdbc.vendor.
              OracleValidConnectionChecker
        </valid-connection-checker-class-name>     
    </local-tx-datasource>
</datasources>

  • Este datasource lo vamos a colocar en D:\servers\jboss-5.1.0.GA\server\default\deploy

  • Y por ultimo, vamos a colocar el JAR del driver de oracle (el mismo que habiamos agregado al modulo ModelTutorial) en el siguiente directorio del JBoss: D:\servers\jboss-5.1.0.GA\server\default\lib


Descargas de los fuentes

Para descargar los fuentes del modulo EjbTutorial, haga clic aqui
Para descargar los fuentes del modulo ModelTutorial, haga clic aqui
Para descargar los fuentes del modulo WebEjbTest, haga clic aqui
Para descargar los fuentes del datasourcehaga clic aqui

Sitios similares

http://schuchert.wikispaces.com/EJB+3+and+Java+Persistence+API



    martes, 12 de julio de 2011

    EJB - Ejemplos para descargar

    A continuación se podrán descargar los ejemplos de EJBs

    Descargas de ejemplos de EJB3

    • Descargar los EJB (para el proyecto llamado EjbTutorial - proyecto ejb)
    • Descargar el test de los EJBs (para el proyecto llamado EjbTest - proyecto java simple)
    • Descargar el proyecto WEB para la invocación del los EJBs (para el proyecto llamado WebEjbTest - proyecto Web )

    Para levantar un entorno de trabajo con Eclipse + EJB3 + JBoss para poder ejecutar estos ejemplos, ver:

    Así es como tendría que quedarnos los proyectos en el eclipse



    jueves, 7 de julio de 2011

    EJB - Configuración Eclipse + JBoss + EJB3

    Este tutorial pretende explicar paso a paso como configurar un entorno de trabajo para empezar a trabajar con JBoss, EJB3 y Eclipse.
    Los pasos para la configuración del entorno listo para empezar a publicar/deployar EJBs serán los siguientes:

    • Descargar las utilidades necesarias, 
    • Configurar el JBoss con el Eclipse e inicializarlo.
    • Configurar el Eclipse con el JBoss Tool (set de plugins para eclipse)
    • Configurar un proyecto EJB en eclipse (llamado EjbTutorial)
    • Configurar un cliente standalone que pueda invocar un EJB3 (llamado EjbTest)
    • Configurar un cliente web (servlet) que pueda invocar un EJB3 (llamado WebEjbTest).
    • Configurar un proyecto del tipo Enterprise Application Project (llamado WebEjbTest_EAR)

    Al final del mismo, encontraremos como queda configurado un proyecto de eclipse con el JBoss listo para levantar y con todas las librerías necesarias (JARs) y links de descarga de los ejemplos de este tutorial.

    Descargas

      Pasos para la configuración del JBoss con en el eclipse
      1. Descomprimir el eclipse recientemente descargado
      2. Descomprimir e instalar la JDK 1.6.26 (JDK y JRE) recientemente descargada
      3. Configurar el server JBoss con el Eclipse
        • Ir a la vista Server


        • En la vista Server, creamos un servidor


        • Seleccionamos el servidor JBoss


        • Seleccionamos el Home Directory y el JRE del JBoss


        • Seleccionamos el JRE del JBoss


        • Terminamos de crear el server JBoss


        • Mostramos como quedaría el server JBoss creado


        • Procedemos a cambiar el puerto donde levantara al servidor para que no colapse (mas adelante) con la base de datos Oracle (ambos levantan en el mismo puerto 8080)


        • Mostramos como queda el servidor con el puerto cambiado


        • Ahora vamos a levantar el servidor JBoss en el eclipse


        • Mostramos el log que se lanza cuando iniciamos el servidor


        • Mostramos como queda el server una vez levantado el JBoss


        • Mostramos como ingresamos a la URL del JBoss



      Pasos para la configuración del JBoss Tool con en el eclipse

      Para poder trabajar con JBoss es recomendable utilizar JBoss Tool, Estas herramientas son un set de plugins  para eclipse que soportan JBoss,  Hibernate, JBoss AS, Drools, jBPM, JSF, (X)HTML, Seam, Smooks, JBoss ESB, JBoss Portal, entre otras
      Se podrá encontrar mas información en la pagina oficial: http://www.jboss.org/tools
      • Obtener la URL del JBoss Tool en http://www.jboss.org/tools 
        • Hacemos clic en Downloads & Updates
        • Ingresamos al sitio oficial y desde ahi obtenemos la URL que despues vamos a ingresar en el eclipse para descargar el JBoss Tool. La version del JBoss Tool que vamos a descargar es la JBoss Tools 3.2 para Eclipse 3.6.2



      • Vamos al eclipse y precedemos a descargar el JBoss Tool luego de haber obtenido la URL de descarga


      • Agregamos la URL en el eclipse para la instalación de la herramienta y continuamos con la instalación (dicha instalación puede demorar varios minutos)




      Pasos para la configuración del entorno de desarrollo en el eclipse con EJB3 + JBoss 4.2.3 + Cliente standalone
      • Una vez que tenemos configurado el JBoss 4.2.3 en el eclipse e instalado el set de plugins de JBossTool, procedemos a crear un proyecto en el eclipse del tipo EJB Project con el nombre EjbTutorial






      • Luego, procedemos a crear un SessionBean  (EJB) del tipo Stateless con el nombre HelloWorldBean y su interface remota (ojo, por ahora no vamos a crear la interface local, solo la remota)




      •  Una vez creado el SessionBean del tipo Stateless con su interfaz remota, procedemos a deployar/desplegar el EJB en el JBoss.





      • Una vez que hayamos deployado/desplegado el EJB, vamos a crear un cliente para invocar a este EJB remoto. Este ejemplo es muy simple pero alcanza para demostrar su funcionamiento. Vamos a crear un nuevo proyecto en el eclipse del tipo Java Project llamado EjbTest y vamos a agregar como dependencia a este proyecto/modulo, el proyecto EJB creado anteriormente (es decir, este nuevo proyecto java va a tener como dependencia al proyecto/modulo EJB).Vamos a modificar el EJB creado anteriormente agregando un método tanto el HelloWorldBean como en el HelloWorldBeanRemote llamado hello() que retorne un String.
      • Haciendo un paralelismo con proyectos empresariales J2EE, esto  puede comparase cuando tenemos la aplicación separada por módulos (proyectos) donde tenemos el modulo WEB (proyecto java en este simple ejemplo) y el modulo de negocio o modulo EJB (que seria el proyecto EJB creado anteriormente). 










      • Por ultimo, vamos a deployar nuevamente el modulo/proyecto EJB y luego vamos a ejecutar el test (HelloWorldTest) del proyecto EjbTest 






      Pasos para la configuración del entorno de desarrollo en el eclipse con EJB3 + JBoss 5.1 + Cliente Web

      A diferencia de la configuración anterior, solo vamos a cambiar dos temas.

      Uno es que vamos a necesitar instalar el JBoss 5.1 para que funcionen todas las anotaciones de Java EE 5, entre ellas, las que nos permitirán inyectar los EJBs (mediante @EJB) ya que con el JBoss 4.2.3 no funcionan.  The Java 5 Enterprise Edition standard specifies that a Servlet can reference a Session Bean through an @EJB annotated reference, this was not implemented in JBoss Application Server 4.2.2.
      De hecho jboss 4.2.3 es una versión de transición que no es 100% compatible con J2EE 5
      Dos, es que vamos a crear un nuevo proyecto/modulo que sera del tipo Web para poder crear el servlet.
      • En primer lugar, vamos a descargar el JBoss 5.1 y luego procedemos a su instalación en el eclipse como lo hicimos con el JBoss 4.2.3










      • En segundo lugar, vamos a proceder a armar un proyecto WEB (que va a consistir en un servlet el cual va a invocar el EJB creado mas arriba (HelloWorldBean). El proyecto WEB lo vamos a llamar WebEjbTest. El tipo de proyecto en eclipse se llama Dynamic Web Project
      IMPORTANTE: Fe de erratas: Las capturas que se hicieron para demostrar la creación del proyecto WEB se hicieron teniendo en cuenta el JBoss 4.2.3 lo cual esta MAL. Cuando vean en las capturas que se esta haciendo referencia a dicho JBoss, reemplazarlo por el JBoss recientemente descargado (5.1.0) ya que sino no les van a funcionar los ejemplos. Es decir, el servlet no va a poder inyectar los EJBs mediante la anotación @EJB,
        • Creamos un proyecto WEB junto a los otros dos proyectos creados previamente.






        • Ahora procedemos a crear el servlet que luego invocara al EJB












        • Ahora procedemos a crear la dependencia con el proyecto/modulo de EJB (EjbTutorial)


        • Ahora procedemos a modificar el servlet creado para que invoque al EJB (HelloWorldBean) y mostramos como se deployara y se vera el resultado por consola






      • En este caso, el DEPLOY se llevo a cabo en la siguiente ruta:
      D:\wc_hibernate_ejb_jboss\.metadata\.plugins\org.jboss.ide.eclipse.as.core\JBoss_5.1_Runtime_Server1310563169018\deploy


      Listo, hasta acá tenemos configurado de una manera sencilla un cliente web que invoca a un EJB

      NOTA: En caso de querer que el deploy se arme en un EAR (en lugar de tener por separado el WAR y el JAR), tendríamos que crear un proyecto en eclipse del tipo Enterprise Application Project el cual tendrán ambos proyectos/módulos: El proyecto/modulo de EJB (EjbTutorial) y el proyecto/modulo WEB (WebEjbTest). A continuación vemos paso a paso como llevar a cabo estos pasos:

      Configuración de un proyecto Enterprise Application Project

      Ver: https://cwiki.apache.org/GMOxSAMPLES/5-minute-tutorial-on-enterprise-application-development-with-eclipse-and-geronimo.html
      • Para esto seguimos los siguientes pasos:







      • Y modificamos la inyección del EJB para que funcione de este manera

      • El proyecto final en el eclipse nos quedaría así:





      Descargas de ejemplos

      Por favor, haga clic en: Descargar ejemplos EJB

      Bibliografia



      * EJB 3 Developer Guide - A Practical Guide for developers and architects to the Enterprise Java Beans
         Standard - Michael Sikora - 2008