You are on page 1of 9

JBoss

JBoss es una implementacin Open-Source de un "EJB Container". Mediante este tipo de productos que es posible llevar a cabo un desarrollo con EJB's "Enterprise Java Bean's". Este tipo de producto ("EJB Container") generalmente no es distribuido como producto individual y por esta razn se le pudiera considerar a "JBoss" como un producto diferente ms no nico. La gran gamma de productos en este ramo de Java ( J2EE para ser ms exactos) han sido comercializados como "Java Application Servers" Como se observa en la siguiente grfica un "Java Application Server" se encuentra compuesto por dos partes: un "Servlet Engine" y un "EJB Engine", dentro del "Servlet Engine" se ejecutan exclusivamente las clsicas aplicaciones de Servidor (JSP's ("Java Server Pages") y Servlets) , mientras el "EJB Engine(Container)" es reservado para aplicaciones desarrolladas alrededor de EJB's ".

Casi todos los "Application Servers" en el mercado hoy en da son conocidos como "Fully J2EE Compliant", este trmino implica que se cumplen todas las especificaciones J2EE definidas por "Sun" y es aqu donde es notable la diferencia con JBoss. Cuando utiliza un "Application Server" como alguno de los siguientes ("Fully J2EE Compliant"): WebLogic , Websphere , Oracle 9i Application Server , Sun Application Server, no existe una clara distincin entre el "Web-Container" y "EJB Container", entonces es posible ejecutar tanto JSP/Servlets as como EJB's, sin embargo, el ambiente se encuentra altamente integrado para que sea transparente (al menos para el programador final) la comunicacin entre JSP/Servlets y EJB's. Sin embargo, JBoss es nicamente un "EJB Container" y es por esto que generalmente se utiliza en conjuncin con un "Web-Container", el "Web-Container" puede ser cualquiera disponible en el mercado, sin embargo, cuando obtenga JBoss incluir Tomcat proporcionado como "Web-Container", aunque lo anterior no restringe a JBoss para operar con otro "Web Container" como ServletExec , la nica ventaja de utilizar el "Web Container" incluido con JBoss ser en tiempo de coordinacin/configuracin entre JBoss|"x" Web-Container, y siendo que un ambiente utilizando EJB's es altamente complejo es preferible concentrarse en algo que ya ha sido utilizado y depurado. Java Bean y Enterprise Java Bean Un "Java Bean" es un componente utilizado en Java que permite agrupar funcionalidades para formar parte de una aplicacin, esto puede ser: un "Java Bean" agrupando informacin personal, datos sobre un pedimento, requerimientos de ordenes,etc. Un "Enterprise Java Bean" agrupa funcionalidades para una aplicacin, sin embargo, a diferencia de un "Java Bean" un "Enterprise Java Bean" es un "deployable component", lo cual implica que existe un ambiente de ejecucin , ste ambiente es precisamente un "EJB(Enterprise Java Bean) Container" parte de un java application server . Un "Java Bean" requiere ser integrado con otros componentes para que ste sea funcional, mientras un "Enterprise Java Bean" a travs de un "EJB Container" puede ser activado("deployed"). Ventajas de EJB ("Enterprise Java Beans") Un EJB a travs de un "EJB Container" ofrece varios servicios y funcionalidades no disponibles en un "Java Bean", algunas son las siguientes:

Servicios ("Middleware") : es la mayor ventaja de un EJB. Cuando se disea un componente de Software se deben definir varios servicios para su funcionamiento, algunos pueden ser: Si ocurre un error que procedimiento debe ejecutarse ? Si la base de datos especificada se encuentra desactivada, existe otra alternativa ? No fue posible cumplir exitosamente "x" procedimiento, se deben retractar sus acciones parciales o reinvocar la transaccin ? Estos Servicios (comnmente llamados "Middleware") por lo general son requeridos adems de la lgica contenida en los componentes principales, obviamente estos servicios ("Middleware") an deben ser diseados, sin embargo, mediante un "EJB Container" se ofrecen estos servicios y es a travs de un "Enterprise Java Bean" que es posible desarrollar los componentes principales ("lgica de negocios"). Divisin de Trabajo : La posibilidad de dividir "Servicios"(EJB Container) de "Componentes Principales"(EJB'S) permite una clara divisin de trabajo, esto es, un diseador de "componentes"(EJB's) puede concentrar sus esfuerzos en la "lgica de proceso" sin preocuparse del diseo de servicios. Y de la misma manera un "diseador" de servicios("Middleware") concentrarse en su rea. Esta divisin de trabajo trae consigo otra pregunta: Como se logra la interoperabilidad ? La interoperabilidad entre "Servicios" y "Componentes" se debe a la existencia de especificaciones para EJB's, estas especificaciones (parte primordial de J2EE ) definen los requerimientos para un "EJB Container" y los requisitos para un "Enterprise Java Bean". Diversos Vendedores : El uso de especificaciones para EJB's permite que existan diversos vendedores tanto de "EJB Containers" los cuales son incluidos en un java application server , as como "Enterprise Java Bean's" los cuales resuelven algn tipo de lgica. Lo anterior permite ejecutar cualquier "EJB" en cualquier "EJB Container", esto es, puede adquirir un conjunto de EJB's producidos por Inprise o inclusive desarrollarlos dentro de su empresa y estos podrn ser ejecutados en un "EJB Container" de IBM,Inprise o JBoss. Procedimientos Remotos ( RMI ): Debido a la solucin que intentan ofrecer EJB ("Enterprise Java Beans") su diseo gira alrededor de procedimientos remotos lo cual permite la operacin de un sistema distribuido. Diversos Clientes: Un EJB puede interactuar con una gran gamma de clientes desde: JSP o Servlets , bases de datos , Applets , sistemas ERP (SAP,JDEdward's). Desventajas de EJB ("Enterprise Java Beans") Tiempo de Desarrollo : El desarrollar un Sistema con EJB's es sumamente complejo, aunque para ciertas empresas puede presentar una solucin ideal, debido a la complejidad-tiempo de ( traducindose en costo) para muchas corporaciones EJB's resultan una solucin sobrada , denominada en Ingles: "overkill". Conocimiento exhausto de Java : EJB's es uno de los principales componentes de J2EE y por esta razn tambin depende fuertemente de otras partes de J2EE: Como RMI , JNDI y JDBC. Tipos de EJB ("Entreprise Java Bean") Session EJB's: Un Session EJB permite realizar cierta lgica solicitada por un cliente ya sea un JSP|Servlet, Applet e inclusive otro EJB. Existen dos tipos de Session EJB's: - Stateless (Session) EJB's : Este tipo de EJB como su nombre lo indica no mantiene estado("Stateless") en el "EJB Container", estos EJB's son utilizados para realizar tareas rutinarias que no requieren identificar o rastrear al cliente, algunos EJB's de este tipo son: operaciones matemticas complejas, bsquedas generales, etc. - Statefull (Session) EJB's: A diferencia de "Stateless (Session) EJB's" este tipo de EJB's permiten mantener la sesin del cliente en el "EJB Container", de esta manera el cliente puede trabajar con cierto juego de datos especifico administrado por el "EJB Container", la aplicacin ideal para este tipo de EJB es un componente de compra ("Shopping Cart") el cual puede identificar artculos e informacin personal del cliente a travs de un lapso de tiempo extenso ("Session"). Entity EJB's: Un Entity Bean a diferencia de un "Session Bean" trabaja en conjuncin con un depsito de informacin (generalmente una base de datos ), esto permite que el EJB manipule informacin residente en sistemas ajenos al "EJB Container"; en un "Statefull (Session) EJB" si ocurre una falla en el "EJB Container" se pierde toda informacin, mientras si se utiliza un "Entity EJB" an permanecer esta informacin en el sistema aledao (generalmente una base de datos ). En otras palabras, un "Entity EJB" manipula una copia | reflejo de informacin que reside en otro sistema. Al igual que "Session EJB's" existen dos tipos de "Entity EJB's": (Entity) Bean Managed Persistence Este tipo de "Entity Bean" requiere que la lgica necesaria para accesar el sistema de informacin ( base de datos ) se definida manualmente, por lo general esta lgica se encuentra en JDBC y define: como y cuando debe ser accesada|actualizada|guardada la informacin entre el EJB y la base de datos.

(Entity) Container Managed Persistence Este "Entity Bean" como su nombre lo indica es manejado por el "EJB Container", a diferencia de un "Bean Managed EJB" donde se requiere definir lgica de acceso manualmente, en un "Container Managed EJB" el "EJB Container" genera toda lgica de acceso para el sistema de informacin ( base de datos ). Aparentemente un "Bean Managed EJB" no tiene mucha razn de ser, sin embargo, hay casos donde es empleada lgica de acceso sumamente compleja la cual no es posible generar a travs del "EJB Container", es por esto que los "Bean Managed EJB's" permanecern en existencia a pesar de las facilidades ofrecidas por "Container Managed EJB's" Messaging EJB's Un "Messaging EJB" ofrece las funcionalidades de (valga la redundancia) sistemas "Messaging" como MQSeries de IBM o Rendez-Vous de Tibco. A muy grandes rasgos un sistema "Messaging" ofrece el funcionamiento de intermediario para recibir y publicar mensajes ("Messages"), una de las ventajas de un "Messaging System" es que opera en forma asincrnica ("asynchroynous") o "non-blocking". Composicin de un Java Bean Un EJB esta compuesto de 4 partes (con la excepcin de "Messaging EJB's") las cuales son: "Enterprise Bean Class" "Home Interface" "Remote Interface" "Deployment Descriptor"

Instalacin Pasos Previos Instalacin del JDK (J2SE) La base para operar cualquier producto que utiliza "Java" es el "JDK" de la plataforma correspondiente, puede encontrar instrucciones para plataformas Linux as como Windows, en las siguientes direcciones:

JDK para Linux : http://javabasico.osmosislatina.com/java_linux.htm

JDK para Windows : http://javabasico.osmosislatina.com/java_windows.htm

Los pasos anteriores son los suficientes para el "JDK" en lo que concierne a la instalacin de JBoss, seguramente despus tenga que trabajar con la tambin sumamente importante variable ambiental CLASSPATH, por ahora lo anterior es suficiente. (Ms sobre CLASSPATH en Utilizacin de la variable CLASSPATH ).

Instalacin de JBoss

1.Una vez obtenido el archivo Tar de http://www.jboss.org que contiene el binario, este debe ser descomprimido en un directorio temporal ( /tmp por lo general) para poder iniciar la instalacin.

2.El paso anterior genera un directorio por nombre JBoss-<numero_de_version> dentro del directorio temporal ( /tmp ) si desciende a este directorio observar el directorio jboss el cual contiene la distribucin de JBoss.

Cabe mencionar que la versin de Tomcat incluida en JBoss es idntica a la proporcionada en http://jakarta.apache.org/tomcat , la nica diferencia es que los archivos de configuracin para JBoss de este archivo Tar se encuentran adaptados a Tomcat.

3.Se recomienda movilizar el directorio jboss al directorio /usr/local, adems se recomienda definir la variable ambiental JBOSS_HOME al archivo /etc/bashrc , si no esta familiarizado con ambientes *nix, esto significa agregar la linea: export JBOSS_HOME=/usr/local/jboss;; para instalaciones Windows esta variable ambiental puede ser definida de la misma manera que CLASSPATH, descrita en las instrucciones del JDK. Estructura bin Este directorio contiene los ejecutables utilizados por JBoss, el ms importante siendo el "script" de arranque utilizado por ste (run.sh) .

client Contiene los diversos archivos JAR's que sern utilizados por los distintos clientes de los EJB's utilizados en JBoss. Dichos archivos deben ser agregados a la variable CLASSPATH del sistema donde radica el cliente; el cliente generalmente siendo un JSP/Servlet que accesa el EJB, este paradigma gira alrededor de Stubs/Skeletons de RMI una parte central de EJB's.(Vea la grfica bsica de JBoss donde se ilustra este concepto)

docs Este directorio contiene documentacin acerca de JBoss.

lib Este directorio contiene los archivos JAR's empleados por JBoss requeridos en cualquier modalidad.

server Este directorio contiene tres sub-directorios nombrados: all, default y minimal; cada subdirectorio contiene los distintos archivos de configuracin necesarios para ejecutar JBoss en diferentes modalidades.

La modalidad all incluye la ejecucin de JBoss para emplearse como "Cluster", ejecucin de "Web-Services" y otras funcionalidades ms ; el directorio default como su nombre lo implica, incluye la configuracin para ejecutar JBoss de manera bsica, mientras el directorio minimal contiene los valores de configuracin necesarios para ejecutar JBoss con requerimientos mnimos; el "Script" de arranque proporcionado con JBoss emplea los valores del directorio default, para emplear otra modalidad es necesario modificar dicho "Script" de arranque (run.sh).

A continuacin se describen los directorios residentes en la modalidad de arranque default :

conf Este directorio contiene las diferentes secciones de configuracin utilizadas por JBoss, dependiendo de la modalidad utilizada este directorio puede contener distintos archivos , sin embargo, sus detalles sern descritos en configuracin de JBoss .

data Contiene distintos parmetros y archivos de configuracin para las Bases de Datos proporcionadas con JBoss (Hypersonic y la implementacin "Messaging" de JBoss) -generalmente utilizada para aplicaciones demo.

deploy

Este directorio es ampliamente utilizado ya que aqu se colocan los EJB's para que sean ejecutados por JBoss, una vez colocado el archivo JAR (en forma de EJB) en este directorio, JBoss automticamente expande y ejecuta el EJB.

lib Contiene los archivos JAR's empleados por JBoss en base a la modalidad tratada.

log Contiene los distintos registros ("Logs") generados por JBoss.

tmp Contiene archivos creados por JBoss y utilizados de manera temporal.

work Contiene las clases y archivos utilizados por JBoss para ejecucin.

Instalacin de JBoss.
Fecha de creacin: 16.09.2001 Revisin 1.0 (16.09.2001) Enrique Ibez Alemany Copyright (c) 2002, Enrique Ibez Alemany. Este documento puede ser distribuido solo bajo los trminos y condiciones de la licencia de Documentacin de javaHispano v1.0 o posterior (la ltima versin se encuentra en http://www.javahispano.org/licencias/).

Introduccin
Este artculo tiene como motivo mostrar la instalacin y ejecucin del servidor J2EE JBoss. Ante todo hay que aclarar que el JBoss esencialmente es un servidor EJB, por eso su nombre inicial EJBoss a los inicios del proyecto, pero por la beneficiosa aportacin de mucha gente se ha convertido en un servidor J2EE. JBoss es completamente una aplicacin Java, por eso es necesario que el JDK 1.3 o superior este instalado y tambin es conveniente que el subdirectorio '/bin' del JDK este en el PATH para que los ejecutables esten disponibles desde cualquier directorio sin

necesidad de incluir la ruta completa. Es conveniente siempre que nosotros queramos iniciar el JBoss con los scripts de arranque que vienen en la distribucin. Yo personalmente siempre los utilizo. En este artculo se explica la instalacin de la versin 2.4.0 del JBoss. Esta versin es la ltima, pero al menos (por conocimiento propio) este artculo seria perfectamente vlido desde la versin 2.1. Ahora debemos procedecer a la descarga del JBoss. La distribucin se presenta en un archivo comprimido '.zip' . En versiones anteriores tambin se podia encontrar en ficheros comprimidos con la extensin '.tar.gz' y 'tar.bz2'. En estas diferentes presentaciones solo cambia el sistema de compresin pues el contenido es el mismo. Siempre podemos conseguir la ltima versin de JBoss desde su pgina en spurceforge [1], pero podemos ir tambin al sitio Web del JBoss [2], aqui podemos encontrar las versiones predecesoras en la seccin DOWLOAD/Binary. Nos daremos cuenta de que tenemos diferentes descargas, una de ellas es el JBoss solo (entonces no es un J2EE ), y otras dos, cada una de ellas con un servidor JSP/Servlets diferente; Tomcat y Jetty ( asi si que es un J2EE ). En estas descargas adems del JBoss se incluye embemido el Tomcat o el Jetty , gestionando completamente el funcionamiento de estos productos(Tomcat/Jetty) el JBoss. Estas dos alternativas son vlidas siempre que el servidor EJB (JBoss) y el servidor de JSP/Servlets (Tomcat o Jetty) esten en la misma mquina, pero si necesitamos que cada uno de ellos este en una mquina tendremos la necesidad de instalarlos por separado. Tambin es posible instalar separados cada producto en la misma mquina y hacerlos colaborar. En fin hay varias posibilidades pero esto no es materia de este artculo, ya lo veremos en los prximos. Volviendo a la descarga, como se ha dicho y segn la versin que presentamos en este artculo elegiremos uno de los siguientes archivos:

JBoss-2.4.0.zip JBoss-2.4.0_Tomcat-3.2.3.zip Boss-2.4.0_Tomcat-3.2.3.zip

Posibilidades de descarga. Una vez descargado lo tenemos que descomprimir con nuestra herramienta favorita, ya sea 'gunzip' en sistemas Linux o 'WinZip' en sistemas Windows. Hay que prestar especial atencin para conservar la estructura de directorios. El resultado es un directorio con el nombre del archivo sin la extensin del formato de compresin, en nuestro caso sin el '.zip'. Dentro de este directorio encontramos si hemos elegido solo el JBoss, pues la estructura de directorios del mismo y si el que hemos elegido es por ejemplo el que est acompaado con el Tomcat encontraremos un directorio '/jboss' y '/tomcat'. Si hemos llegado aqui sin ningn problema, la parte de la instalacin ya esta finalizada. Siempre teniendo claro que nuestro JDK esta perfectamente instalado vamos a proceder a ejecutar el JBoss y por supuesto tambin el Tomcat o Jetty si hemos elegido alguna de estas alternativas. Para esto usaremos los scripts que vienen en la distribucin, asi que nuestro PATH tiene que apuntar al directorio '/bin' del JDK. Como

se coment anteriormente existe la posibilidad de iniciar el JBoss sin necesidad de usar los scripts de arranque, esto es simplemente hacer lo que en el script se hace en varias lneas hacerlo solo en una, pero nosotros vamos a usar la forma ms comun y sencilla. Para que hacerlo complicado si no es necesario ;-). Ahora tenemos que situarnos en el subdirectorio '/bin' de la distribucin del JBoss. En nuestro caso si hemos optado por instalar solo el JBoss en 'JBoss-2.4.0/bin' si por el contrario hemos elegido una de las distribuciones con el Tomcat o el Jetty ser en 'JBoss-2.4.0/jboss/bin'. Primero vamos a chequear que nuestra instalacin del JDK es correcta. Asi que escribimos:
java -version

El resultado tiene que ser un mensaje que nos informe de la versin del Java instalado en nuestro sistema. Como se coment al inicio del artculo esta debe ser 1.3 o superior. Llegado aqui solo nos queda iniciar el servidor JBoss. Escribimos... en windows... ...solo el JBoss
run.bat

El JBoss y (Tomcat/Jetty)run_with_tomcat.bat ---o--- run_with_jetty.bat ... y en Linux ...solo el JBoss


run.sh

El JBoss y (Tomcat/Jetty)run_with_tomcat.sn ---o--- run_with_jetty.sh El JBoss mientras arranca informa por consola de los servicios que est iniciando. A continuacin se muestra un pequeo extracto de la salida por consola al final del arranque:
... [MailService] Mail Service 'Mail' bound [MailService] Started [Service Control] Started 28 services [Default] JBoss 2.4.0 Started in 0m:21s

Esta salida por consola corresponde a la versin 2.4.0 del JBoss con el Tomcat. Cuando se ejecuta el JBoss nicamente en la misma versin se inician 27 servicios asi que no hay que hacer mucho caso al nmero de servicios de las diferentes versiones. Si se produce algn error nos daremos cuenta pues se lanza una excepcin y se muestra por consola la traza. De todas formas si vemos que el JBoss continua hasta mostrar el mensaje de que se ha arrancado en x segundos, es que se ha iniciado satisfactoriamente. Esto suele pasar cuando nos descargamos una versin con un servidor JSP/Servlet y arrancamos solo el JBoss. En este caso se lanzar una excepcin pues en estas distribuciones se incluye en el directorio 'JBoss2.4.0/jboss/deploy' una aplicacin ('.ear') que tiene parte Web y como no dispone de un servidor JSP/Servlet no puede desplegar la parte web. Con mover este archivo a otro directorio.(Mejor que sea fuera de la distribucin del JBoss) ya funcionar.

Conclusin
Aunque el artculo es un poco extenso, simplemente la instalacin del JBoss se reduce a dos pasos, descargar y descomprimir. Y la ejecucin a una sola, llamar al script apropiado. En prximos captulos veremos como desplegar EJB's y nos adentraremos ms en la configuracin de este fenomenal servidor J2EE.

Recursos
[1] JBoss en sourceforge, http://sourceforge.net/projects/jboss/ [2] Web de JBoss, http://www.jboss.org

Acerca del autor


Enrique Ibez Alemany Enrique Ibez Alemany (Enric) es desarrollador Java en Valencia(Espaa). Dejo de tener tiempo libre cuando apareci ella, la fallera de su vida.

You might also like