Menú Curso Java EJB's : Codigo Fuente "Cliente Ejecutivo" JSP para EJB de CuentaBancaria

(Anterior) EAR's ("Enterprise Archives"), IDE's y Deployment Descriptors.

A continuación se describen dos paginas empleadas para realizar una solicitud al "BMP Entity EJB" diseñado anteriormente; una de estas paginas se encuentra compuesta por una forma HTML, mientras la otra es un JSP ("Java Server Page") que realiza la solicitud al EJB.

La ejecución de estas paginas será llevada acabo en un EAR ("Enterprise Archive"), previa incorporación en un WAR("Web-Archive"); la estructuración de ambos archivos será descrito posteriormente.

Página index.htm

<HTML>
<BODY>
 

<H3 align="center"> Búsqueda de Cuentas Bancarias </H3> 
<H3 align="center"> a través de EJB's ("Enterprise Java Beans") </H3> 
<HR>
<FORM action="busqueda.jsp">

<TABLE align="center" border="3" cellspacing="5" cellpadding="5"> 
<TR><TH> Proporcione los siguientes Datos </TH></TR> 

<TR>
  <TD> Rango Inferior : 
     <SELECT name="rangoinf">
       <OPTION value="2000">$2,000.00</OPTION> 
       <OPTION value="4000">$4,000.00</OPTION>
       <OPTION value="6000">$6,000.00</OPTION> 
       <OPTION value="10000">$10,000.00</OPTION> 
       <OPTION value="20000">$20,000.00</OPTION> 
       <OPTION value="40000">$40,000.00</OPTION>  
       <OPTION value="60000">$60,000.00</OPTION>  
       <OPTION value="80000">$80,000.00</OPTION>  
       <OPTION value="100000">$100,000.00</OPTION>  
       <OPTION value="200000">$200,000.00</OPTION>  
     </SELECT> 
  </TD>
</TR>

<TR> 
  <TD> Rango Superior : 
     <SELECT name="rangosup">
       <OPTION value="2000">$2,000.00</OPTION> 
       <OPTION value="4000">$4,000.00</OPTION>
       <OPTION value="6000">$6,000.00</OPTION> 
       <OPTION value="10000">$10,000.00</OPTION> 
       <OPTION value="20000">$20,000.00</OPTION> 
       <OPTION value="40000">$40,000.00</OPTION>  
       <OPTION value="60000">$60,000.00</OPTION>  
       <OPTION value="80000">$80,000.00</OPTION>  
       <OPTION value="100000">$100,000.00</OPTION>  
       <OPTION value="200000">$200,000.00</OPTION>  
     </SELECT> 
  </TD>
</TR>

<TR>
  <TD align="center"> 
    <INPUT type="submit" value="Buscar"> 
    <INPUT type="reset" value="Reiniciar">
  </TD>
</TR> 

</TABLE>
</FORM>


</BODY>
</HTML>

  • Esta página simplemente contiene una forma HTML que solicita los rangos de búsqueda al usuario.

  • Una vez proporcionados los respectivos datos, la forma es procesada por el JSP busqueda.jsp (action="busqueda.jsp") descrito a continuación .

Página busqueda.jsp

<HTML>
<BODY>

 

<%@ page language="java" import="javax.naming.*,javax.rmi.*,com.osmosislatina.ejb.cuenta.*,java.util.*"%>
<%
	double rangoinf = Double.parseDouble((String)request.getParameter("rangoinf"));
	double rangosup = Double.parseDouble((String)request.getParameter("rangosup"));
%>

<H3 align="center"> Resultados Búsqueda de Cuentas Bancarias </H3> 
<H3 align="center"> a través de EJB's ("Enterprise Java Beans") </H3> 
<HR/>
<UL>

<TABLE align="center" border="3" cellspacing="5" cellpadding="5">
<TR> 
  <TH>Nombre</TH> 
  <TH>Cuenta</TH> 
  <TH>Saldo</TH> 
</TR>
 

<%
  Properties env = new Properties();
              
              // Definir las propiededes y ubicacion de busqueda de Nombres JNDI.
              env.setProperty("java.naming.factory.initial",  "org.jnp.interfaces.NamingContextFactory");
              env.setProperty("java.naming.provider.url",  "localhost:1099");
              env.setProperty("java.naming.factory.url.pkgs",  "org.jboss.naming");
       try {

           Context initial = new InitialContext(env);
           Object objref = initial.lookup("BancoDeMexico");

           CuentaBancariaHome home = 
               (CuentaBancariaHome)PortableRemoteObject.narrow(objref, 
                                            CuentaBancariaHome.class);
           Collection c = home.findEnRango(rangoinf, rangosup);
           Iterator i=c.iterator();
           i=c.iterator();
           
           while (i.hasNext()) {
              CuentaBancaria cuenta = (CuentaBancaria)i.next();
              String id = (String)cuenta.getPrimaryKey();
              double balance = cuenta.getSaldo(); 
	      String nombre = (String)cuenta.getNombre();
	      String apellido = (String)cuenta.getApellido();
%>
<TR>
  <TD align=center><%=nombre%> <%=apellido%></TD>
  <TD align=center><%=id%></TD>
  <TD align=center><%=balance%></TD>
</TR>
 
<%
   }
       } catch (Exception ex) {
           System.err.println("Ocurrio una excepcion." );
           ex.printStackTrace();
           
%>
     <H3> Ocurrio un error al comunicarse con el EJB-Engine </H3> 
     <H3> <%=ex.toString()%> </H3> 
 
<%
       }

%>
</TABLE>
</UL>

<HR>

</BODY>
</HTML>

  • En la parte inicial de esta página se importan las librerias ("packages") que serán utilizadas en el JSP; la libreria ("packages") javax.naming es utilizada para realizar busquedas JNDI, java.rmi representa las Clases para llamadas remotas (RMI) asociadas con la comunicación del EJB, com.osmosislatina.ejb.cuenta son las clases del EJB empleadas como "Stubs" y java.util contiene clases auxilares para programas Java.

  • Posteriormente se extraen los valores de la forma HTML a través del objeto request los cuales son asignados a sus respectivas variables y convertidos al tipo Double; la conversión se debe a que el metodo del EJB esta diseñado con estos parametros de entrada .

  • Es definido un fragmento HTML que inicia la definición de una tabla HTML en donde serán colocados los resultados de la búsqueda.

  • Posteriormente se definen las propiedades del directorio para nombramientos JNDI, en este caso se indica el Directorio de nombres que reside en la maquina local (localhost) utilizando el puerto TCP 1099, este directorio JNDI es ejecutado automaticamente al iniciar JBoss y es el que otorga servicios de nombramiento a los EJB's.

  • Una vez inicializado el Contexto JNDI y dentro del bloque try/catch se realiza una búsqueda para el componente llamado BancoDeMexico, y posteriormente se trae una referencia del "Home Interface", seguido se invoca la función findEnRango del Objeto con los datos proporcionados por el usuario.

  • Los resultados de la invocación anterior son colocados dentro de un Objeto Collection y posteriormente se genera un ciclo para extraer sus valores.

  • En cada iteración de ciclo se genera un renglón HTML con los resultados correspondientes.

  • Se define la sección catch del bloque, donde se imprime a pantalla un posible error no contemplado en la búsqueda.

  • NOTA : El diseño de este JSP se realizó de esta manera por razones didacticas, este tipo de invocaciones hacia EJB's generalmente se debe realizar con un diseño apegado al paradigma "MVC" ("Model-View-Controller") que permite una división efectiva entre el despliegue gráfico (HTML) y lógica de negocios (Invocación EJB). Este tema es descrito a detalle en Patrones de Diseño para EJB's

Terminos Legales de Contenido ©2000-2011 Osmosis Latina

Diseñado bajo estándares : XHTML   CSS  

webmaster@osmosislatina.com