You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »


El acceso a características específicas del servidor de aplicaciones y usarlas en tu aplicación J2EE le haría más poderosa que sólo tener acceso a sus características propias J2EE. Te proporciona la capacidad de escribir extensiones para tu servidor de aplicaciones.

Esta aplicación ejemplo enlista a toda pool de conexiones de base de datos definida en Geronimo. Puedes elegir cualquier pool de conexiones y probar su conectividad a la base de datos, así como enlistar esquemas y tablas existentes. Además, el usuario puede ver los registros de cada una de las tablas enlistadas.

Con la lectura de este artículo deberías ser capaz de tener acceso a recursos específicos de Geronimo desde tus aplicaciones y usarlos de una forma eficiente.

Este artículo esta organizado en las secciones siguientes :-

Visión General de la Aplicación


La apliación ejemplo en este artículo te ayudará a probar las pools de conexiones a bases de datos que se encuentren activas en tu servidor Geronimo. Puedes considerarlo como una extensión a la consola Geronimo, ya que la versión actual no contiene la funcionalidad de probar conexiones a pools de base de datos después de su activación.

La figura siguiente ilustra el flujo de la aplicación.

La página de Bienvenida funciona como un boletín de noticias que despliega la lista de pools de conexiones a bases de datos que estén activas en el servidor de aplicaciones Geronimo. Los usuarios pueden probar directamente a dichas pools de conexiones desde la primer página. Si una pool de conexiones particular requiere un username y password para obtener la conexión, te permite ingresar dichos valores en la ventana pop up que aparece. La lista de esquemas de base de datos y las tablas asociadas con la pool de conexiones será desplegada en la página de Esquemas y Tablas. Se puede tener acceso al contenido de cada tabla desde dicha página.

Contenido de la Aplicación

La aplicación Inventario consiste en la siguiente lista de paquetes.

  • org.apache.geronimo.samples.dbtester.beans
    • DBManagerBean - Corazón de la aplicación, el cual controla la mayor parte de la lógica de la aplicación (incluyendo el acceso al Kernel de Geronimo).
  • org.apache.geronimo.samples.dbtester.web
    • ContentTableServlet - Obtiene el contenido de una tabla de Base de Datos y le dirige a la capa de presentación.
    • ListTablesServlet - Obtiene la lista de esquemas y tablas asociadas a una pool de conexiones a BD.

La lista de los archivos web de la aplicación, se ilustran en el diagrama siguiente.

|- jsp
    |- common_error.jsp
    |- popup.jsp
    |- table_content.jsp
    |- table_list.jsp
|- WEB-INF
    |- geronimo-web.xml
    |- web.xml
|- index.jsp

geronimo-web.xml define la lista de dependencias que deben ser cargadas al cargador de clases de la aplicación web.

geronimo-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app
	xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1">
	
	<environment>
		<moduleId>
			<groupId>org.apache.geronimo.samples.dbtester</groupId>
			<artifactId>dbtester</artifactId>
			<version>1.0</version>
		</moduleId>
		<dependencies>
			<dependency>
				<groupId>geronimo</groupId>
				<artifactId>geronimo-kernel</artifactId>
			</dependency>
			<dependency>
				<groupId>geronimo</groupId>
				<artifactId>geronimo-connector</artifactId>
			</dependency>
			<dependency>
				<groupId>geronimo</groupId>
				<artifactId>geronimo-management</artifactId>
			</dependency>
			<dependency>
				<groupId>mx4j</groupId>
				<artifactId>mx4j</artifactId>
			</dependency>
		</dependencies>	
	</environment>

	<context-root>/dbtester</context-root>
</web-app>

web.xml define dos servlets que actuarán como la capa de control entre la capa de presentación y la capa de servicio.

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
	 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
	 version="2.4">	
	 
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
  	</welcome-file-list>
    	
    <servlet>
	    <display-name>ContentTableServlet</display-name>
	    <servlet-name>ContentTableServlet</servlet-name>
		<servlet-class>
			org.apache.geronimo.samples.dbtester.web.ContentTableServlet
		</servlet-class>
  	</servlet>
	
	<servlet>
	    <display-name>ListTablesServlet</display-name>
	    <servlet-name>ListTablesServlet</servlet-name>
		<servlet-class>
			org.apache.geronimo.samples.dbtester.web.ListTablesServlet
		</servlet-class>
  	</servlet>
  	
    <servlet-mapping>
	    <servlet-name>ContentTableServlet</servlet-name>
	    <url-pattern>/listContent</url-pattern>
    </servlet-mapping>
	
	<servlet-mapping>
	    <servlet-name>ListTablesServlet</servlet-name>
	    <url-pattern>/listTables</url-pattern>
    </servlet-mapping>
        
</web-app>

La parte más importante en esta aplicación es el cómo tener acceso al kernel de Geronimo y así obtener la lista de las pools de conexiones a bases de datos que se encuentren activas. Esta tarea es constrolada por la clase DBManagerBean.

DBManagerBean.java
	private void init(){
		Kernel kernel = KernelRegistry.getSingleKernel();
		Set cfList = kernel.listGBeans(new AbstractNameQuery(ConnectionFactorySource.class.getName()));
		
		for(Iterator iterator = cfList.iterator();iterator.hasNext();){

			AbstractName name = (AbstractName)iterator.next();
			try {
				Object rs = kernel.invoke(name, "$getResource", new Object[]{}, new String[]{});
				
				if(rs instanceof javax.sql.DataSource){
					DataSource ds = (DataSource)rs;	
					poolMap.put(name.getArtifact().getArtifactId(), ds);
				}
			} catch (GBeanNotFoundException e) {
				e.printStackTrace();
			} catch (NoSuchOperationException e) {
				e.printStackTrace();
			} catch (InternalKernelException e) {
				e.printStackTrace();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

Para obtener la lista de esquemas y sus tablas, la aplicación usa metadata de base de datos proporcionada en un controlador JDBC. Meta data de ResultSet ha sido usada para obtener datos relacionados con registros y para despliegar el contenido de la base de datos. El siguiente código snippet ilustra el cómo solicita la aplicación a los esquemas y a sus tablas en un DataSource.

DBManagerBean.java
	public Map getTableList(String poolName) throws SQLException {
		
		tableMap = new HashMap();
		
		if(poolMap.containsKey(poolName)){
			DataSource ds = (DataSource)poolMap.get(poolName);
			Connection con = null;
			try {
				
				con = ds.getConnection();
				
				DatabaseMetaData metaData = con.getMetaData();
				String[] tableTypes = {"TABLE"};
				ResultSet rs = metaData.getTables(null, null, null, tableTypes);
				
				while(rs.next()){
					String schemaName = rs.getString("TABLE_SCHEM");
					String tableName = rs.getString("TABLE_NAME"); 
					ArrayList tableList = null;
					
					if(tableMap.containsKey(schemaName)){
						tableList = (ArrayList)tableMap.get(schemaName);
						tableList.add(tableName);
					}else {
						tableList = new ArrayList();
						tableList.add(tableName);
					}
					tableMap.put(schemaName, tableList);
				}
			} catch (SQLException e) {
				throw e;
			}finally {
				if(con != null){
					try {
						con.close();
					} catch (SQLException e) {
						e.printStackTrace();
					}
				}
			}
		}
		
		return tableMap;
	}

Herramientas usadas

Las herramientas usadas para el desarrollo y construcción de la aplicación ejemplo DB List, han sido:

Eclipse

El IDE Eclipse fue usado para el desarrollo de esta aplicación ejemplo. Es una herramienta de desarrollo muy poderosa, popular y open-source. También están disponibles plug-ins de integración con el servidor de aplicaciones Geronimo. Eclipse puede ser descargado de la siguiente URL:
http://www.eclipse.org

Apache Maven 2

Maven es una herramienta popular de construcción open-source para proyectos Java enterprise, diseñada para facilitar el tedioso trabajo del proceso de construcción. Maven usa una propuesta declarativa, donde la estructura del proyecto y su contenido se describen, en lugar de la propuesta basada-en-tareas que emplea, por ejemplo, Ant ó en archivos make tradicionales. Esto ayuda a consolidar estándares comúnes-en-grupo y reduce el tiempo requerido para escribir y mantener scripts de construcción. La propuesta declarativa, basada-en-ciclo-de-vida que usa Maven 1 es, para muchos, un salto radical de las técnicas tradicionales de construcción, y Maven 2 da mayor énfasis en ese sentido. Maven 2 puede ser descargado de la siguiente URL:
http://maven.apache.org

Regresar a la sección superior

FALTA TRADUCCION ----------------->

Building and Deploying the Sample Application

Download the dbtester application from the following link:
dbtester

After extracting the zip file, the dbtester directory will be created.

Building

dbtester application comes with a Maven 2 script to help users to build from source code. Open a command prompt window and navigate to the dbtester directory and issue the mvn clean install command. This will create a dbtester-1.0.war file under the target folder within dbtester. Now,dbtester web application is ready to be deployed on the Geronimo Application server.

Deploying

Deploying sample application is pretty straight forward, since we will be using Geronimo Console.

  1. Navigate to Deploy New link from the Console Navigation panel.
  2. Load dbtester-1.0.war file from dbtester/target folder onto the Archive input box.
  3. Press Install button to deploy the application in the server.

Back to Top

Testing of the Sample Application

To test the sample application, open a browser and type http://localhost:8080/dbtester. This will load the index page of dbtester application which acts as a notice board, with the list of database pools deployed in Geronimo.

The user can directly test the listed database pools with this sample application. Furthermore, the application can be used to list the contents of the databases.

Summary

This article has shown you how to access Geronimo related features from a J2EE application. You followed step-by-step instructions to build, deploy and test a sample application to elaborate these features. This sample application can be used as tester for database connection pools deployed in Geronimo.
<----------------- FALTA TRADUCCION

  • No labels