Construir Aplicaciones EJB con JBoss, Lomboz y Eclipse

Primero de todo tienes que configurar Eclipse con JBOSS como tu servidor de aplicaciones.

Por eso, ves a esta p�gina: http://www.eclipse.org/downloads/index.php y descarga el paquete binario del editor Eclipse. Puedes descargar el paquete apropiado para tu plataforma. Este tutorial se desarroll� utilizando Linux (Red Hat 8.0) como sistema operativo.

Nota:
Eclipse no incluye en entorno de ejecuci�n Java (JRE). Necesitar�s como m�nimo tener instalada una versi�n 1.3 del JDK en tu m�quina.

Ahora descomprime este fichero en tu directorio home.

    [vishal@localhost eclipse]$ unzip eclipse-SDK-2.1-linux-gtk.zip
    Archive: eclipse-SDK-2.1-linux-gtk.zip
    Archive: eclipse-SDK-2.1-linux-gtk.zip
    inflating: eclipse/plugins/org.eclipse.core.boot_2.1.0/boot.jar
    inflating: eclipse/plugins/org.eclipse.core.boot_2.1.0/splash.bmp
    inflating: eclipse/plugins/org.eclipse.core.boot_2.1.0/boot.xml
    inflating: eclipse/plugins/org.eclipse.core.boot_2.1.0/plugin.properties
    -----------------------------------------------------------------------------
    ----------------------------------------------------------------------------
    -------------------------------------------------------------------------
    inflating: eclipse/install.ini 
    inflating: eclipse/startup.jar
    inflating: eclipse/readme/readme_eclipse.html

Una vez que lo hayas descomprimido tendr�s un directorio llamado eclipse en tu directorio home. Entra en ese directorio y ejecuta el fichero de script llamado eclipse:

    [vishal@localhost eclipse]$ cd eclipse
    [vishal@localhost eclipse]$ ls
    cpl-v10.html features install.ini plugins startup.jar
    eclipse icon.xpm notice.html readme workspace
    [vishal@localhost eclipse]$ ./eclipse

Esto ejecutar� el IDE en tu ordenador. Familiar�zate con este entorno:

.�Instalar JBOSS

Ahora que Eclipse ya est� instalado y en funcionamiento, instalemos JBOSS.

Puedes descargar JBOSS listo para ejecutarse. Como JBOSS viene con una sencilla base de datos embebida (Hypersonic) y un servidor Web (JBossWEB o Tomcat) puedes utilizarlo sin ninguna configuraci�n inicial. Las descargas se pueden realizar desde la p�gina del proyecto JBOSS en http://sourceforge.net/projects/jboss, donde siempre podr�s encontrar descargas actualizadas, o desde la p�gina de JBOSS, donde podr�s encontrar informaci�n �til sobre JBoss, la oficial, forums, informaci�n del proyecto, etc., y tambi�n la p�gina de descarga http://www.jboss.org/downloads.jsp. Para este tutorial hemos utilizado la versi�n JBOSS-3.2.1 con el servidor HTTP interno JBOSSWeb Jetty.

Primero entra como root en tu Linux y descomprime este fichero en alg�n lugar apropiado donde tengas suficiente espacio. Yo lo tengo bajo el directorio /opt/jboss/.

Esto crear� un directorio llamado jboss-3.2.1 bajo /opt/jboss/

Antes de ejecutar JBOSS para comprobar su correcta instalaci�n, debes asegurarte de que has configurado correctamente las siguientes variables de entorno:

    JBOSS_HOME: /opt/jboss/jboss-3.2.1 
    JAVA_HOME: /usr/java/j2sdk1.4.1_02
    CLASSPATH: /usr/java/j2sdk1.4.1_02/lib/tools.jar 

Ahora ve al directorio /opt/jboss/jboss-3.2.1 y tendr�s estos directorios:

    [root@localhost jboss-3.2.1]# ls
    bin client docs lib server

Entra en el directorio bin y encontrar�s un script llamado run.sh. Ejec�talo desde la l�nea de ocmandos. Si tienes suerte, arrancar� y ver�s el siguiente mensaje:

  15:12:59,876 INFO [Server] JBoss 
  (MX MicroKernel) [3.2.1 (build: CVSTag=JBoss_3_2_1 date=200305041533)] Started 
  in 59s:676ms.

Para asegurarte de que JBOSS est� funcionando correctamente, arranca tu navegador web y ponle esta direcci�n:

http://localhost:8080/jmx-console/index.jsp

Si puedes ver esta p�gina en tu navegador, es porque JBOSS se est� ejecutando en tu m�quina.

Observa que en esta p�gina bajo la sub-cabecera jboss hay un enlace a service=Hypersonic. Pulsa ese enlace y traer� una p�gina MBean View. En esta p�gina hay una operaci�n MBean llamada startDatabaseManager; ve a ella y pulsa el bot�n Invoke. Esto traer� la consola de la base de datos Hypersonic, desde aqu� puedes acceder a los esquemas y otras operaciones de control de la base de datos.

Nota del Traductor:
Si has instalado una versi�n de JBOSS posterior a la 3.2.1 no te aparecer� el enlace a service=Hypersonic; (en las �ltimas versiones de JBOSS, �ste viene configurado, por motivos de seguridad, para que no se pueda acceder la base de datos mediante TCP-IP).
Para activar la conexi�n TCP-IP de la base de datos sigue estos pasos:
  1. Det�n el servidor JBOSS.
  2. Ve al directorio /opt/jboss/jboss-3.2.1/server/default/deploy y abre el fichero hsqldb-ds.xml
  3. Quita el comentario a la l�nea:
    
    <connection-url>jdbc:hsqldb:hsql://localhost:1701</connection-url>
    
    
  4. Comenta la l�nea:
    
    <connection-url>jdbc:hsqldb:${jboss.server.data.dir}/hypersonic/localDB
    </connection-url>
    
    
  5. Al final del fichero, quita el comentario a la siguiente etiqueta:
    
    <mbean code="org.jboss.jdbc.HypersonicDatabase"
      name="jboss:service=Hypersonic">
      <attribute name="Port">1701</attribute>
      <attribute name="Silent">true</attribute>
      <attribute name="Database">default</attribute>
      <attribute name="Trace">false</attribute>
      <attribute name="No_system_exit">true</attribute>
    </mbean>
    
    
  6. Graba el fichero y cop�alo tambi�n al directorio: /opt/jboss/jboss-3.2.1/server/all/deploy
  7. Arranca otra vez el servidor JBOSS, ve de nuevo a la consola y ya podr�s ver el enlace a Hypersonic

.�Crear el Esquema de la Base de Datos

Como mencionamos en la p�gina anterior, el esquema de nuestro inventario est� compuesto de cinco relaciones. Cargaremos este esquema en la base de datos interna Hypersonic:

Para hacer esto, utilizaremos los siguientes ficheros de script:

Primero copia estos tres ficheros al directorio $JBOSS_HOME/server/default/data/hypersonic/. En este ejemplo est� en /opt/jboss/jboss-3.2.1/server/default/data/hypersonic/

Ahora accede al HSQL Database Manager utilizando la consola JMX-Management Console que has visto arriba.

Nota:
Por favor, borra/elimina cualquier tabla existente en la base de datos que pueda tener los mismos nombres, o naturalmente obtendr�s errores cuando ejecutes los scripts.

En el men� File del SQL Database Manager selecciona Open Script.. y selecciona el script myStoreSchema.script.

Despu�s de pulsar Open pulsa sobre Execute SQL Statement y aparecer� la siguiente pantalla:

Ve a Go to View > Refresh Tree. Si puedes ver las cinco nuevas tablas es que tu esquema est� listo, y es hora de rellenarlo con datos.

Ve a Go to File > Open Script.. > selecciona myStoreSchema.data y pulsa Open.. > Execute SQL Statement.

Ahora tus datos est�n cargados en la base de datos, para poder verificarlo s�lo ejecuta cualquier consulta para ver resultados como estos:

Asegurate de 'aceptar' (Options->commit) para grabar tu esquema en la base de datos.

Nota:
Apaga el servidor JBOSS ya que posteriormente los ejecutaremos desde dentro de Eclipse

.�Instalar Lomboz

Para poder ejecutar JBOSS desde dentro de Eclipse necesitar�s un plug-in, y para este tutorial hemos utilizado Lomboz que est� disponible en http://sourceforge.net/projects/lomboz o en http://www.objectlearn.com/index.jsp.

Nota:
Para este tutorial hemos utilizado el paquete lomboz.21_02.zip.

Ahora descomprime este fichero en un directorio temporal; tendr�s un directorio llamado plugins. Ve al directorio plugins/com.objectlearn.jdt.j2ee/servers. Este directorio contiene ficheros de configuraci�n para varios servidores. Para este tutorial puedes utilizar este: jboss321all.server.

Nota:
Si hay varios ficheros de configuraci�n, el plug-in adoptar� el primer fichero de configuraci�n que haya dentro del directorio eclipse/plugins/com.objectlearn.jdt.j2ee/servers/, en orden alfab�tico, por eso renombra todos los ficheros de configuraci�n con la extensi�n .bak. Esto es s�lo para evitar resbalones mientras aprendemos.

Ahora copia el fichero jboss321all.server al directorio servers:

    cd plugins/
    [vishal@localhost plugins]$ ls
    com.objectlearn.jdt.j2ee
    [vishal@localhost com.objectlearn.jdt.j2ee]$ cd servers
    [vishal@localhost servers$ ls
    jboss244.server.bak jboss303Tomcat4112.server.bak 
    jboss300all.server.bak jboss321all.server 
    tomcat403.server.bak weblogic70.server
    jboss300.server.bak tomcat410.server x.log

Aqu� puedes ver un fragmento del fichero jboss321all.server utilizado para la configuraci�n:

Puedes modificar las distintas configuraciones de este fichero de acuerdo a tu entorno (por ejemplo, el n�mero de puerto).

Una vez que has grabado este fichero bajo el directorio com.objectlearn.jdt.j2ee/servers, copia el directorio com.objectlearn.jdt.j2ee bajo el directorio $HOME/eclipse/plugins/, donde $HOME es tu directorio home.

[vishal@localhost temp/plugins] 
  mv com.objectlearn.jdt.j2ee /home/vishal/eclipse/plugins/.

.�Configuraci�n de Lomboz

Ahora ejecuta Eclipse para configurar Lomboz en $HOME/eclipse/eclipse.

Ve al m�n� Windows > Open Perspective > Java como se ve en la siguiente figura:

Ve de nuevo al men� Window > Customize Perspective > Other.

Selecciona el sub-nodo Lomboz Actions.

Pulsa OK. Ahora tendr�s un nuevo icono en el men� superior parecido a este:

Pulsa sobre este icono y tendr�s una ventana Lomboz J2EE View en tu entorno:

Ahora ya est� disponible la vista Lomboz J2EE. Ve a Window > Customize Perspective. Selecciona File > New sub node. Selecciona todos los nodos que empiecen con Lomboz.

Selecciona Window > Show view. Seleciona Console, Se mostrar� la vista Lomboz J2EE y otras m�s como se ve en la figura:

Ahora pulsa OK. Tendr�s todas estas opciones bajo File > New > y aparecer� el men� Lomboz, o pulsando con el bot�n derecho en el Package Explorer aparecer� un men� desplegable.

.�Configurar JBOSS para ejecutarlo desde dentro de Eclipse

Primero tenemos que configurar la selecciones de desarrolo Java, porque Lomboz requiere diferentes directorios para los c�digos fuente y binario.

Ve a Window > Preferences > Java > New Project.

Introduce src y bin como nombres de esas carpetas, que ser�n por defecto. Por favor, no modifiques estos nombres ya que son necesarios para algunas de las tareas de Lomboz.

Tambi�n debes asegurarte de que la variable de entorno JRE_LIB apunta a la librer�a JRE.

Ve a Window > Preferences.

Ve al nodo Lomboz bajo la ventana Preferences. Asegurate de que la variable Tools.jar est� seleccionada a $JAVA_HOME/lib/tools.jar.

Ve al sub-nodo server definitions bajo el nodo Lomboz. Selecciona JBOSS 3.2.ALL bajo Server types y el resto de las opciones se rellenar�n despu�s de cargar el fichero de configuraci�n del servidor creado para este tutorial: jboss321all.server.

Ahora, bajo Server Definitions, ve a Classpath y asegurate de que todos los paths son correctos. Si hay una mala selecci�n de un path, se mostrar� un cruz roja sobre los iconos jar en la subsecci�n Server libraries / Client libraries.

Desde aqu� se pueden a�adir o eliminar librer�as. Asegurate de pulsar Apply para aceptar todos los cambios antes de alterar cualquier opci�n.

Ahora verifica tus variables de classpath.

Ve a Window > Preferences > Java > Classpath Variables:

Configura todas estas variables del Classpath de acuerdo a tu entorno.

.�Probar tu Configuraci�n

Crear un proyecto J2EE de prueba para probar tu configuraci�n.

Ve a File > New > Lomboz J2EE Project.

Introduce Test como nombre de proyecto y pulsa Next.

Chequea aqu� tu configuraci�n; si tienes Test/src en la carpeta build path y Test/bin en default output est� todo bien.

Ahora pulsa en la pesta�a Libraries en el Project Creation Wizard. Debido a Bug en Eclipse 2.1 est� librer�a est� mal configurada. Por eso, seleccionala y eliminala.

Ahora a�ade una nueva librer�a > Add Library.. > Selecciona JRE System library > Next.

Selecciona Default library y pulsa Finish y la nueva librer�a estar� configurada.

Nota:
Tendr�s que repetir este paso siempre que crees un nuevo proyecto J2EE, debido al bug en Eclipse 2.1

Ahora pulsa Next, ve a Web Module > Add.. >, introduce como Module Name OnlineBank y pulsa OK.

Ve a la pesta�a Ejb Modules, pulsa Add.. >, e introduce MyBank como Module Name y luego pulsa OK.

Ve a Targeted Server > Add.. > 'JBOSS 3.2.1 ALL'.

Nota:
JBOSS 3.2.1 ALL no es el nombre del fichero, sino el nombre asignado al servidor en el fichero jboss321all.server utilizado para su configuraci�n.
 
    <serverDefinition
        name="JBOSS 3.2.1 ALL"
        ejbModules="true"

Pulsa Finish. Ahora tendr�s todos estos directorios y librer�as bajo el directorio Test en el Package Explorer.

  • src es el directorio donde estar�n todos los paquetes para componentes EJB y servlets.
  • MyBank es el directorio para tu m�dulo EJB y empezar� con 7 ficheros como se ve en la siguiente figura.
  • OnlineBank es el directorio para tu m�dulo Web y de inicio contendr� 6 ficheros. Tus p�ginas JSP estar�n bajo este directorio en este m�dulo.
Nota:
Si est�s interesado en Ant (del proyecto Jakarta) observa que �mbos m�dulos tienen un fichero build.xml que Ant utiliza para construir la aplicaci�n.

Ahora ve a Window > Show View > Lomboz J2EE View. La vista Lomboz J2EE tendr� un proyecto Test con dos m�dulos MyBank y OnlineBank que utilizan JBOSS 3.2.1 como su servidor por defecto:

Es la hora de crear un EJB; ve a File > New > Lomboz EJB, a�ade un nombre de paquete au.com.tusc; a�ade MySession en Name. Selecciona la opci�n Stateless Session EJB.

Esto crear� un fichero llamado MySessionBean.java en el paquete au.com.tusc como se observa en la siguiente figura.

Nota:
Esto generar� el nombre del bean, el nombre JNDI y el tipo del bean. Al nombre del fichero tambi�n se le ha a�adido la palabra Bean, ya que s�lo dimos el nombre MySession. Debes ser cuidadoso con las convenciones de nombrado, ya que s�lo necesitas el nombre del bean en el wizard. No a�adas la palabra Bean al nombre ya que el wizard lo hace por t�.

Ahora a�adiremos un m�todo de negocio mediante el wizard:

Ve al fichero MySessionBean.java en la ventana Package Explorer y exp�ndelo, pulsa con el bot�n derecho sobre el nodo MySessionBean como se muestra en la siguiente figura, selecciona New > Lomboz EJB Method wizard. En la firma del m�todo pon public String learnJ2EE(String messg), selecciona el tipo de m�todo como Business Method y el Interface Type como Remote Interface.

Esto generar� la firma requerida para tu m�todo de negocio en tu clase bean. Ahora a�ade esta l�nea al m�todo:

 /**
  * @ejb.interface-method
  * tview type="remote"
  *
  **/
     public  String learnJ2EE  (String messg)  {
        return "Me too! "
     }

Graba el fichero. Ahora generaremos el resto de ficheros requeridos para desplegar este Bean (Interfaces Home y Remote junto con las clases de ayuda utilizando Xdoclet).

Primero a�ade este bean al m�dulo: Ve a Package Explorer > Test > MySessionBean.java > MySessionBean, pulsa en �l con el bot�n derecho y aparecer� un men�. Ve a Lomboz J2EE en ese men�, y selecciona Add EJB to module'.

Ve a Package Explorer > Test > MyBank (que es un directorio) pulsa con el bot�n derecho sobre �l, aparecer� un men�. Ve a Lomboz J2EE en ese men�, y selecciona Generate EJB classes. Esto generar� los interfaces necesarios, las clases de ayuda y los ficheros relacionados con el despliegue; es decir, los descriptores de despliegue:

Crear� un nuevo directorio llamado ejbsrc, que tendr� un nuevo paquete llamado au.com.tusc, y bajo este los interfaces remoto y home, junto las clases de ayuda necesarias.

Nota:
No editar�s ninguno de los ficheros generados por Xdoclet bajo el directorio ejbsrc en ning�n momento de este tutorial. Porque cada vez que utilizas la opci�n Generate EJB Classes, generar� los interfaces y las clases de ayuda necesarias que hemos mencionado arriba. Estos ficheros los genera Xdoclet, despu�s de analizar tus clases bean, que se han creado en el wizard de Lomboz. Xdoclet mira las distintas etiquetas y m�todos declarados en la clase bean y genera los ficheros adecuados. Como resultado, s�lo tienes que a�adir los m�todos de negocio y sus respectivas implementaciones en la clase bean, y el resto se lo dejas a Xdoclet. Por eso, en ning�n momento del desarrollo necesitar�s (y no deber�s) editar cualquier fichero generado. Lo ver�s m�s claro seg�n avances por el tutorial.

Debajo del directorio MyBank > META-INF tambi�n encontrar�s 15 ficheros, que incluyen ejb-jar.xml, jboss.xml y ejb-generate.xml. Inicialmente hab�a 6 ficheros; estos nuevos ficheros extras son necesarios para desplegar el bean:

Ahora despleguemos este bean sin entrar en m�s detalles del despliegue. Ve a la vista Lomboz J2EE en tu espacio de trabajo y expande Test > y luego MyBank. Habr� a�adido au.com.tusc.MySessionBean a tu m�dulo MyBank EJB. Pulsa con el bot�n derecho en el icono JBOSS 3.2.1 ALL como se muestra en la siguiente figura.

Aparecer� un menu; selecciona la opci�n Debug Server. Arrancar� el servidor en modo Debug y despu�s de arrancarlo mostrar� este mensaje en la consola bajo tu espacio de trabajo:

Ve a la vista Lomboz J2EE View >, expande Test >, selecciona MyBank y pulsa en �l con el bot�n derecho; a parecer� un men�; selecciona la opci�n Deploy:

Una vez desplegado el bean, en la consola ver�s un mensaje que lo confirma:

Ahora crearemos un cliente para acceder a este bean desplegado en el servidor de aplicaciones JBOSS. Ve a Package Explorer > Test > src, pulsa con el bot�n derecho y aparecer� un men�; selecciona EJB Test client. Introduce test como nombre de paquete y Client como nombre de cliente:

Selecciona EjbHome como MySessionHome y Ejb Interface como MySession. Finaliza como se muestra en la figura:

Ahora que hemos generado el cliente, es hora de llamar a los m�todos de negocio del bean desplegado. Necesitamos alg�n c�digo para llamar al m�todo del bean:

Teclea estas l�neas en el m�todo testBean():

    public void testBean() {
        try {
            au.com.tusc.MySession myBean = getHome().create();

            //--------------------------------------
            //This is the place you make your calls.
            //System.out.println(myBean.callYourMethod());

            String request = "I'm tired of 'Hello, world' examples..";
            System.out.println("Request from client : " + request);
            System.out.println("Message from server : " + myBean.learnJ2EE(request) );
         } catch (RemoteException e) {
            e.printStackTrace();
         } catch (CreateException e) {
            e.printStackTrace();
         } catch (NamingException e) {
            e.printStackTrace();
         }
    }

Ahora selecciona Client dentro del Package Explorer. Ve al men� superior y pulsa sobre el bot�n con este icono:

En este icono ve a > Run as > Java Application.

Tu cliente va a realizar un petici�n y los resultados se mostrar�n en la consola del espacio de trabajo, de esta forma:

Nota:
Ignora las excepciones, que s�lo indican que te falta org.apache.log4j.Property en la path del cliente. Cubriremos esto m�s adelante ya que no afecta a la funcionalidad del bean.

Has creado un bean y has podido realizarle una petici�n, Enhorabuena!!

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO