Creación de una aplicación para JBOSS Requerimientos: Se debe instalar JBOSS junto con Tomcat, JBuilder 5 Personal y MagicDraw UML 5.0 beta con la conexión a JBuilder. JBOSS con Tomcat se puede bajar de SourceForge.net, JBuilder 5 Personal está en Borland.com y MagicDraw se consigue en www.MagicDraw.com. Primer paso: Se crea el siguiente diagrama en MagicDraw. Interest +calculateCompoundInterest( principle : double, rate : double, periods : double ) : double +ejbCreate() SessionBean InterestRemote +calculateCompoundInterest( principle : double, rate : double, periods : double ) : double EJBObject InterestHome +create() : InterestRemote EJBHome Esto se puede hacer creando únicamente la clase Interest con sus métodos respectivos, para aplicarle el patrón Java-EJB. Segundo paso: Se genera el código esqueleto en Java en JBuilder desde MagicDraw. © 2001, Braulio José Solano Rojas Página 1 de 6 Tercer paso: Hay que agregar algunos “import” y métodos “vacíos” manualmente ya que el diseño de las relaciones del patrón de MagicDraw no es perfecto. Además se agrega el código del método calculateCompoundInterest. Los archivos deben quedar como sigue: Interest.java package interest; import java.rmi.RemoteException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; public class Interest implements SessionBean{ public void ejbCreate() { } public double calculateCompoundInterest(double principle, double rate, double periods) { System.out.println("Someone called `calculateCompoundInterest!'"); return principle * Math.pow(1+rate, periods) - principle; } public void ejbPostCreate() { } public void ejbRemove() { } public void ejbActivate() { } public void ejbPassivate() { } public void setSessionContext(SessionContext sc) { } } InterestHome.java package interest; import java.io.Serializable; import java.rmi.RemoteException; import javax.ejb.EJBHome; import javax.ejb.CreateException; public interface InterestHome extends EJBHome{ © 2001, Braulio José Solano Rojas Página 2 de 6 public InterestRemote javax.ejb.CreateException; } create() throws java.rmi.RemoteException, InterestRemote.java package interest; import javax.ejb.EJBObject; import java.rmi.RemoteException; public interface InterestRemote extends EJBObject{ public double calculateCompoundInterest(double principle, double rate, double periods) throws java.rmi.RemoteException; } Cuarto paso: JBuilder crea un directorio jbproject en el cual guarda los diferentes proyectos. En este directorio se encuentra el proyecto Interest, el cual es a su vez un directorio. Dentro de él se encuentran tres directorios: bak, classes y src. src contiene los archivos creados anteriormente. Se debe hacer un “make” en JBuilder, con lo que se crean Interest.class, InterestHome.class e InterestRemote.class en el directorio classes dentro de un subdirectorio llamado interest (este es el “package”). Quinto paso: Se debe crear un directorio (llamado META-INF) junto con el directorio interest que se encuentra en classes. Adentro del directorio classes, por lo tanto debe haber dos directorios: interest y META-INF. Sexto paso: Se debe crear dos archivos dentro de META-INF: ejb-jar.xml y jboss.xml. Su contenido debe ser lo siguiente (de acuerdo con los archivos java): ejb-jar.xml <?xml version="1.0" encoding="Cp1252"?> © 2001, Braulio José Solano Rojas Página 3 de 6 <ejb-jar> <description>Interest Sample Application</description> <display-name>Interest EJB</display-name> <enterprise-beans> <session> <display-name>Interest EJB</display-name> <ejb-name>Interest</ejb-name> <home>interest.InterestHome</home> <remote>interest.InterestRemote</remote> <ejb-class>interest.Interest</ejb-class> <session-type>Stateless</session-type> <transaction-type>Bean</transaction-type> </session> </enterprise-beans> </ejb-jar> jboss.xml <?xml version="1.0" encoding="Cp1252"?> <jboss> <enterprise-beans> <session> <ejb-name>Interest</ejb-name> <jndi-name>interest/Interest</jndi-name> </session> </enterprise-beans> </jboss> Séptimo paso: Se debe crear un “archivo” (paquete) con el directorio interest y el directorio META-INF. Para crear el paquete se utiliza el programa jar que viene con JAVA. Y con ello se crea un archivo llamado interest.jar que contiene todos los archivos de interest y de META-INF. Octavo paso: Se debe copiar el archivo interest.jar dentro del subdirectorio de JBOSS llamado deploy. La instalación se hace entonces automáticamente. Noveno paso: © 2001, Braulio José Solano Rojas Página 4 de 6 Se debe crear una aplicación cliente (puede ser un programa JAVA o una página web JAVA-jsp). Se crea, por lo tanto, el archivo interest.jsp. interest.jsp <%@ page import="javax.naming.InitialContext" %> <%@ page import="javax.rmi.PortableRemoteObject" %> <%@ page import="interest.InterestRemote" %> <%@ page import="interest.InterestHome" %> <html> <head> <title>Ejemplo Interest EJB</title> </head> <body> <% try { InitialContext jndiContext = new InitialContext(); Object ref = jndiContext.lookup("interest/Interest"); InterestHome home = (InterestHome) PortableRemoteObject.narrow(ref, InterestHome.class); InterestRemote interest = home.create(); %> Interest on 1000 units, at 10% per period, compounded over 2 periods is: <%= interest.calculateCompoundInterest(1000, 0.10, 2) %> <% } catch(Exception e) { out.print("<b>Error:</b> " + e.toString()); } %> </body> </html> © 2001, Braulio José Solano Rojas Página 5 de 6 Se debe copiar los archivos InterestHome.class e InterestRemote.class al directorio WEB-INF/classes de la aplicación en la que se encuentre el archivo interest.jsp. Décimo paso: Correr la página interest.jsp en algún browser. © 2001, Braulio José Solano Rojas Página 6 de 6