Skip to content

5. Anexos

Aquí describimos la instalación y el uso básico de las herramientas utilizadas en el documento «Persistencia en Java 5: una guía práctica». La información que se presenta a continuación es la disponible en mayo de 2007. Quedará obsoleta en breve. Cuando eso suceda, se invitará al lector a seguir pasos similares, aunque no idénticos. Las instalaciones se realizaron en una máquina con Windows XP Professional.

5.1. Java

Utilizaremos la última versión de Java disponible en Sun [http://www.sun.com]. Las descargas están disponibles en la URL [http://java.sun.com/javase/downloads/index.jsp]:

Image

Image

Inicie la instalación de JDK a partir del archivo descargado. Por defecto, Java se instala en [C:\Program Files\Java]:

Image

5.2. Eclipse

5.2.1. Instalación básica

Eclipse es un IDE disponible en la URL [http://www.eclipse.org/] y se puede descargar en la URL [http://www.eclipse.org/downloads/]. A continuación descargamos Eclipse 3.2.2:

Image

Una vez descargado el archivo zip, lo descomprimimos en una carpeta del disco:

Image

A partir de ahora llamaremos <eclipse> a la carpeta de instalación de Eclipse, que en el ejemplo anterior es [C:\devjava\eclipse 3.2.2\eclipse]. [eclipse.exe] es el ejecutable y [eclipse.ini] es su archivo de configuración. Veamos el contenido de este último:

1
2
3
-vmargs
-Xms40m
-Xmx256m

Estos argumentos se utilizan al iniciar Eclipse de la siguiente manera:

eclipse.exe -vmargs -Xms40m -Xmx256m

Se obtiene el mismo resultado que con el archivo .ini al crear un acceso directo que ejecute Eclipse con estos mismos argumentos. Explicamos cada uno de ellos:

  1. -vmargs: indica que los argumentos que siguen están destinados a la máquina virtual de Java que ejecutará Eclipse. Eclipse es una aplicación Java.
  2. -Xms40m: ?
  3. -Xmx256m: establece el tamaño de memoria en MB asignado a la máquina virtual de Java (JVM) que ejecuta Eclipse. Por defecto, este tamaño es de 256 MB, como se muestra aquí. Si la máquina lo permite, es preferible 512 MB.

Estos argumentos se pasan a JVM, que ejecutará Eclipse. JVM está representado por un archivo [java.exe] o [javaw.exe]. ¿Cómo se localiza este archivo? De hecho, se busca de diferentes maneras:

  • en el archivo PATH del OS
  • en la carpeta <JAVA_HOME>/jre/bin, donde JAVA_HOME es una variable de sistema que define la carpeta raíz de un JDK.
  • en una ubicación pasada como argumento a Eclipse en el formato -vm <ruta>\javaw.exe

Esta última solución es preferible, ya que las otras dos están sujetas a los imprevistos de instalaciones posteriores de aplicaciones que pueden cambiar tanto el PATH del OS como la variable JAVA_HOME.

Por lo tanto, creamos el siguiente acceso directo:

Image

cible
<eclipse>\eclipse.exe" -vm "C:\Archivos de programa\Java\jre1.6.0_01\bin\javaw.exe" -vmargs -Xms40m -Xmx512m
Démarrer dans
carpeta <eclipse> de instalación de Eclipse

Una vez hecho esto, iniciemos Eclipse mediante este acceso directo. Aparecerá un primer cuadro de diálogo:

Image

Un [workspace] es un espacio de trabajo. Aceptemos los valores predeterminados propuestos. Por defecto, los proyectos de Eclipse se crearán en la carpeta <workspace> especificada en este cuadro de diálogo. Existe la posibilidad de evitar este comportamiento. Eso es lo que haremos sistemáticamente. Por lo tanto, la respuesta que se dé en este cuadro de diálogo no es importante.

Una vez completado este paso, se muestra el entorno de desarrollo de Eclipse:

Image

Cerramos la vista [Welcome] tal como se sugirió anteriormente:

Image

Antes de crear un proyecto Java, configuraremos Eclipse para indicar que se utilice JDK para compilar los proyectos Java. Para ello, seleccionamos la opción [Window / Preferences / Java / Installed JREs ]:

Image

Normalmente, el JRE (Java Runtime Environment) que se utilizó para iniciar el propio Eclipse debe aparecer en la lista de JRE. Normalmente, ese será el único. Es posible agregar JRE con el botón [Add]. Para ello, hay que indicar la ruta raíz del JRE. El botón [Search], por su parte, iniciará una búsqueda de JREs en el disco. Es una buena forma de saber en qué estado se encuentran los JREs que se instalan y luego se olvida desinstalar al pasar a una versión más reciente. En la imagen anterior, el JRE marcado es el que se utilizará para compilar y ejecutar los proyectos de Java. Es el que se instaló en el párrafo 5.1 y que también se utilizó para iniciar Eclipse. Al hacer doble clic en él, se accede a sus propiedades:

Image

Ahora, creemos un proyecto Java [File / New / Project]:

Selecciona [Java Project], luego [Next] ->

Image

En [2], indicamos una carpeta vacía en la que se instalará el proyecto Java. En [1], le damos un nombre al proyecto. No es necesario que lleve el mismo nombre que su carpeta, como podría sugerir el ejemplo anterior. Una vez hecho esto, utilizamos el botón [Next] para pasar a la siguiente página del asistente de creación:

Image

Arriba, creamos una carpeta especial en el proyecto para guardar los archivos fuente (.java):

Image

  • En [1], vemos la carpeta [src], en la que se guardarán los archivos fuente .java
  • En [2], vemos la carpeta [bin], en la que se guardarán los archivos compilados .class

Terminamos el asistente con [Finish]. Ahora tenemos un esqueleto de proyecto Java:

Image

Hagamos clic con el botón derecho del ratón en el proyecto [test1] para crear una clase Java:

Image

  1. en [1], la carpeta donde se creará la clase. Eclipse propone por defecto la carpeta del proyecto actual.
  2. en [2], el paquete en el que se colocará la clase
  3. en [3], el nombre de la clase
  4. en [4], solicitamos que se genere el método estático [main]

Confirmamos el asistente mediante [Finish]. El proyecto se enriquece entonces con una clase:

Image

Eclipse ha generado el esqueleto de la clase. Se puede acceder a él haciendo doble clic en [Test1.java], como se muestra arriba:

Image

Modificamos el código anterior de la siguiente manera:

Image

Ejecutamos el programa [Test1.java]: [clic droit sur Test1.java -> Run As -> Java Application]

Image

El resultado de la ejecución se muestra en la ventana [Console]:

Image

La ventana [Console] debe aparecer por defecto. Si no fuera así, se puede solicitar su visualización mediante [Window/Show View/Console]:

Image

5.2.2. Selección del compilador

Eclipse permite generar código compatible con Java 1.4, Java 1.5 y Java 1.6. Por defecto, está configurado para generar código compatible con Java 1.4. El API JPA requiere código Java 1.5. Cambiamos el tipo de código generado por [Window / Preferences / Java / Compiler]:

  • a [1]: selección de la opción [Java / Compiler]
  • a [2]: selección de la compatibilidad con Java 5.0

5.2.3. Instalación de los complementos de Callisto

La versión básica instalada anteriormente permite desarrollar aplicaciones Java de consola, pero no aplicaciones Java de tipo web o Swing; de lo contrario, hay que hacerlo todo por cuenta propia. Vamos a instalar varios complementos:

Procedamos de la siguiente manera [Help/Software Udates/Find and Install]:

  • En [2], indicamos que queremos instalar nuevos complementos
  • en [3], se indican los sitios que se deben explorar para encontrar los complementos
  • En [4], se marcan los complementos deseados
  • en [5], Eclipse indica que se ha elegido un complemento que depende de otros complementos que no se han seleccionado
  • en [6], se utiliza el botón [Select Required] para seleccionar automáticamente los complementos que faltan
  • en [7], se aceptan los términos de las licencias de estos distintos complementos
  • En [8], se muestra la lista de todos los complementos que se instalarán
  • en [9], se inicia la descarga de estos complementos
  • en [10], una vez descargados, se instalan todos sin verificar su firma
  • en [11], al finalizar la instalación de los complementos, dejamos que Eclipse se reinicie
  • en [12]; si se ejecuta [File/New/Project], se observa que ahora es posible crear aplicaciones web, lo cual no era posible inicialmente.

5.2.4. Instalación del complemento [TestNG]

TestNG (Test Next Generation) es una herramienta de pruebas unitarias similar en su concepto a JUnit. Sin embargo, aporta mejoras que nos hacen preferirla aquí a JUnit. Procedemos como antes: [Help/Software Udates/Find and Install]:

  • en [2], indicamos que queremos instalar nuevos complementos
  • en [3a], el sitio de descarga de [TestNG] no aparece. Lo agregamos con [3b]
  • en [4b]: el sitio del complemento es [http://beust.com/eclipse]. En [4a], se pone lo que se desee.
  • En [5a], se selecciona el complemento [TestNG] para la actualización. En [5b], se inicia la actualización.
  • En [6], se ha establecido la conexión con el sitio web del complemento. Se nos muestran todos los complementos disponibles en el sitio. Aquí hay solo uno, que seleccionamos antes de pasar al siguiente paso.
  • En [7], aceptamos los términos de la licencia del complemento
  • en [8], se muestra la lista de todos los complementos que se instalarán; aquí hay uno. Iniciamos la descarga. A continuación, todo se desarrolla tal como se describió anteriormente para los complementos de Callisto.

Una vez reiniciado Eclipse, se puede comprobar la presencia del nuevo complemento solicitando, por ejemplo, ver las vistas disponibles [Window / show View / Other]:

 

Como vemos arriba, existe una vista [TestNG] que antes no existía.

5.2.5. Instalación del complemento [Hibernate Tools]

Hibernate es un proveedor JPA y el complemento [Hibernate Tools] para Eclipse resulta útil en el desarrollo de aplicaciones JPA. En mayo de 2007, solo su última versión (3.2.0beta9) permite trabajar con Hibernate/JPA y no está disponible a través del mecanismo que acabamos de describir. Solo lo están las versiones anteriores. Por lo tanto, procederemos de otra manera.

El complemento está disponible en el sitio web de Hibernate Tools: http://tools.hibernate.org/.

  • en [1], seleccionamos la última versión de Hibernate Tools
  • en [2], la descargamos
  • en [3], con un programa de descompresión, descomprimimos en la carpeta <eclipse> el archivo zip descargado (es preferible que Eclipse no esté activo)
  • en [4], se acepta que algunos archivos se sobrescriban durante la operación

Se reinicia Eclipse:

  • en [1]: abrimos una perspectiva
  • en [2]: ahora existe una perspectiva [Hibernate Console]

No seguiremos adelante con el complemento [Hibernate Tools] (Cancel en [2]). Su modo de uso se explica en los ejemplos del tutorial.

A veces, Eclipse no detecta la presencia de nuevos complementos. Se le puede obligar a volver a escanear todos sus complementos con la opción -clean. De esta manera, el ejecutable del acceso directo de Eclipse se modificaría de la siguiente manera:


"<eclipse>\eclipse.exe" -clean -vm "C:\Program Files\Java\jre1.6.0_01\bin\javaw.exe" -vmargs -Xms40m -Xmx512m

Una vez que Eclipse haya detectado los nuevos complementos, se eliminará la opción -clean mencionada anteriormente.

5.2.6. Instalación del complemento [SQL Explorer]

Ahora instalaremos un complemento que nos permitirá explorar el contenido de una base de datos directamente desde Eclipse. Los complementos disponibles para Eclipse se pueden encontrar en el sitio web [http://eclipse-plugins.2y.net/eclipse/plugins.jsp]:

  • en [1]: el sitio de los complementos de Eclipse
  • en [2]: elige la categoría [Database]
  • en [3]: en la categoría [Database], elige la vista por clasificación (poco confiable dado el bajo número de personas que votan)
  • en [4]: QuantumDB ocupa el primer lugar
  • en [5]: elegimos SQLExplorer, más antiguo, con peor calificación (tercero), pero muy bueno de todos modos. Vamos al sitio web del complemento [plugin-homepage]
  • en [6] y [7]: procedemos a descargar el complemento.
  • en [8]: descomprimimos el archivo zip del complemento en la carpeta de Eclipse.

Para verificarlo, reinicia Eclipse, si es necesario con la opción -clean:

  • en [1]: abre una nueva perspectiva
  • en [2]: se observa que hay una perspectiva [SQL Explorer] disponible. Volveremos a ella más adelante.

5.3. El contenedor de servlets Tomcat 5.5

5.3.1. Instalación

Para ejecutar servlets, necesitamos un contenedor de servlets. Aquí presentamos uno de ellos, Tomcat 5.5, disponible en la URL http://tomcat.apache.org/. A continuación, indicamos los pasos (mayo de 2007) para instalarlo. Si ya hay una versión anterior de Tomcat instalada, es mejor desinstalarla primero.

Image

Para descargar el producto, siga el enlace [Tomcat 5.x] que aparece arriba:

Image

Se puede descargar el archivo .exe para la plataforma Windows. Una vez descargado, inicie la instalación de Tomcat haciendo doble clic en él:

Image

Acepta los términos de la licencia ->

Image

Hacer [next] ->

Image

Aceptar la carpeta de instalación propuesta o cambiarla con [Browse] ->

Image

Establecer el nombre de usuario y la contraseña del administrador del servidor Tomcat. Aquí se ha establecido [admin / admin] ->

Tomcat 5.x requiere JRE 1.5. Normalmente debería encontrar la versión instalada en su equipo. Arriba, la ruta indicada es la de JRE 1.6, descargada en el párrafo 5.1. Si no se encuentra ningún JRE, especifique su directorio raíz utilizando el botón [1]. Una vez hecho esto, utilice el botón [Install] para instalar Tomcat 5.x ->

Image

El botón [Finish] finaliza la instalación. La presencia de Tomcat se indica mediante un ícono a la derecha en la barra de tareas de Windows:

Image

Al hacer clic con el botón derecho en este ícono, se accede a los comandos de encendido y apagado del servidor:

Image

Utilizamos la opción [Stop service] para detener ahora el servidor web:

Image

Obsérvese el cambio de estado del ícono. Este último se puede eliminar de la barra de tareas:

Image

La instalación de Tomcat se realizó en la carpeta elegida por el usuario, a la que a partir de ahora llamaremos <tomcat>. La estructura de esta carpeta para la versión Tomcat 5.5.23 descargada es la siguiente:

Image

La instalación de Tomcat ha añadido varios accesos directos al menú [Démarrer]. Utilizamos el enlace [Monitor] que aparece a continuación para iniciar la herramienta de inicio y detención de Tomcat:

Image

Entonces vemos el ícono que se mostró anteriormente:

Image

El monitor de Tomcat se puede activar haciendo doble clic en este ícono:

Image

Los botones [Start - Stop - Pause] - Reiniciar nos permiten iniciar, detener y reiniciar el servidor. Iniciamos el servidor con [Start] y, luego, con un navegador, accedemos a la URL http://localhost:8080. Deberíamos ver una página similar a la siguiente:

Image

Podemos seguir los enlaces a continuación para verificar que Tomcat se haya instalado correctamente:

Image

Todos los enlaces de la página [http://localhost:8080] son de interés y se invita al lector a explorarlos. Tendremos la oportunidad de volver sobre los enlaces que permiten administrar las aplicaciones web implementadas en el servidor:

Image

5.3.2. Implementación de una aplicación web en el servidor Tomcat

5.3.3. Despliegue

Una aplicación web debe cumplir ciertas reglas para poder implementarse en un contenedor de servlets. Sea <webapp> la carpeta de una aplicación web. Una aplicación web se compone de:

classes
en la carpeta <webapp>\WEB-INF\classes
archives java
en la carpeta <webapp>\WEB-INF\lib
vues, ressources (.jsp, .html, ...)
en la carpeta <webapp> o en sus subcarpetas

La aplicación web se configura mediante un archivo XML: <webapp>\WEB-INF\web.xml. Este archivo no es necesario en casos sencillos, especialmente cuando la aplicación web solo contiene archivos estáticos. Creemos el siguiente archivo HTML:

<html>
    <head>
      <title>Application exemple</title>
  </head>
  <body>
      Application exemple active ....
  </body>
</html>

y guardémoslo en una carpeta:

Image

Si cargamos este archivo en un navegador, obtenemos la siguiente página:

Image

El código URL que muestra el navegador indica que la página no fue servida por un servidor web, sino que fue cargada directamente por el navegador. Ahora queremos que esté disponible a través del servidor web Tomcat.

Volvamos a la estructura de directorios de <tomcat>:

Image

La configuración de las aplicaciones web implementadas en el servidor Tomcat se realiza mediante archivos XML ubicados en la carpeta [<tomcat>\conf\Catalina\localhost]:

Estos archivos XML se pueden crear manualmente, ya que su estructura es sencilla. En lugar de seguir este procedimiento, utilizaremos las herramientas web que nos ofrece Tomcat.

5.3.4. Administración de Tomcat

En su página de inicio http://localhost:8080, el servidor nos ofrece enlaces para administrarlo:

Image

El enlace [Tomcat Administration] nos permite configurar los recursos que Tomcat pone a disposición de las aplicaciones web implementadas en él, por ejemplo, un grupo de conexiones a una base de datos. Sigamos el enlace:

Image

La página que aparece nos indica que la administración de Tomcat 5.x requiere un paquete específico llamado «admin». Regresemos al sitio de Tomcat [http://tomcat.apache.org/download-55.cgi]:

Image

Descarguemos el archivo zip denominado [Administration Web Application] y luego descomprímamolo. Su contenido es el siguiente:

Image

La carpeta [admin] debe copiarse en [<tomcat>\server\webapps], donde <tomcat> es la carpeta en la que se instaló Tomcat 5.x:

Image

La carpeta [localhost] contiene un archivo [admin.xml] que debe copiarse en [<tomcat>\conf\Catalina\localhost]:

Image

Detengamos y luego reiniciemos Tomcat si estaba activo. A continuación, con un navegador, volvamos a acceder a la página de inicio del servidor web:

Image

Sigamos el enlace [Tomcat Administration]. Aparecerá una página de inicio de sesión (para que aparezca, es posible que tengas que «recarregar» o «actualizar» la página):

Aquí hay que volver a ingresar la información que proporcionamos durante la instalación de Tomcat. En nuestro caso, ingresamos el par admin / admin. El botón [Login] nos lleva a la siguiente página:

Image

Esta página permite al administrador de Tomcat definir

  • fuentes de datos (Data Sources),
  • la información necesaria para el envío de correo (Mail Sessions),
  • los datos de entorno accesibles para todas las aplicaciones (Entries de entorno),
  • administrar a los usuarios y administradores de Tomcat (Users),
  • administrar grupos de usuarios (Groups),
  • definir roles (= lo que un usuario puede o no puede hacer),
  • definir las características de las aplicaciones web implementadas por el servidor (Service Catalina)

Sigamos el enlace [Roles] que aparece arriba:

Image

Un rol permite definir lo que un usuario o un grupo de usuarios puede o no puede hacer. A un rol se le asignan ciertos derechos. Cada usuario está asociado a uno o más roles y cuenta con los derechos de estos. El rol [manager] que se muestra a continuación otorga el derecho de administrar las aplicaciones web implementadas en Tomcat (implementación, inicio, detención, descarga). Vamos a crear un usuario [manager] al que le asignaremos el rol [manager] para permitirle administrar las aplicaciones de Tomcat. Para ello, seguimos el enlace [Users] de la página de administración:

Image

Vemos que ya hay varios usuarios. Usamos la opción [Create New User] para crear un nuevo usuario:

Image

Le asignamos al usuario «manager» la contraseña «manager» y le asignamos el rol «manager». Utilizamos el botón [Save] para confirmar esta adición. El nuevo usuario aparece en la lista de usuarios:

Image

Este nuevo usuario se agregará al archivo [<tomcat>\conf\tomcat-users.xml]:

Image

cuyo contenido es el siguiente:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager"/>
  <role rolename="admin"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="manager" password="manager" fullName="" roles="manager"/>
  <user username="admin" password="admin" roles="admin,manager"/>
</tomcat-users>
  • línea 10: el usuario [manager] que se ha creado

Otra forma de agregar usuarios es modificar directamente este archivo. Este es el procedimiento que se debe seguir, por ejemplo, si por casualidad se ha olvidado la contraseña del administrador «admin» o del «manager».

5.3.5. Administración de las aplicaciones web implementadas

Ahora regresemos a la página de inicio [http://localhost:8080] y sigamos el enlace [Tomcat Manager]:

Image

A continuación, aparece una página de autenticación. Nos identificamos como manager / manager, c.a.d, el usuario con el rol [manager] que acabamos de crear. De hecho, solo un usuario con este rol puede utilizar este enlace. En la línea 11 de [tomcat-users.xml], vemos que el usuario [admin] también tiene el rol [manager]. Por lo tanto, también podríamos utilizar la autenticación [admin / admin].

Image

Obtenemos una página que muestra las aplicaciones actualmente implementadas en Tomcat:

Image

Podemos agregar una nueva aplicación mediante los formularios que se encuentran al final de la página:

Image

En este caso, queremos implementar en Tomcat la aplicación de ejemplo que creamos anteriormente. Lo hacemos de la siguiente manera:

Image

Context Path
/ejemplo
el nombre utilizado para designar la aplicación web
que se va a implementar
Directory URL
C:\data\trabajo\2006-2007\eclipse\dvp-jpa\anexos\tomcat\ejemplo
la carpeta de la aplicación web

Para obtener el archivo [C:\data\travail\2006-2007\eclipse\dvp-jpa\annexes\tomcat\exemple\exemple.html], le pediremos a Tomcat el URL y el [http://localhost:8080/exemple/exemple.html]. El contexto sirve para asignar un nombre a la raíz del árbol de la aplicación web desplegada. Utilizamos el botón [Deploy] para llevar a cabo el despliegue de la aplicación. Si todo sale bien, obtenemos la siguiente página de respuesta:

Image

y la nueva aplicación aparece en la lista de aplicaciones implementadas:

Comentemos la línea del contexto /ejemplo anterior:

/exemple
enlace a http://localhost:8080/exemple
Démarrer
permite iniciar la aplicación
Arrêter
permite detener la aplicación
Recharger
permite recargar la aplicación. Esto es necesario, por ejemplo, cuando se han agregado,
modificado o eliminado ciertas clases de la aplicación.
Undeploy
Eliminación del contexto [/exemple]. La aplicación desaparece de la lista
de aplicaciones disponibles.

Ahora que nuestra aplicación /ejemplo está implementada, podemos realizar algunas pruebas. Accedemos a la página [exemple.html] a través de la URL [http://localhost:8080/exemple/vues/exemple.html]:

Image

Otra forma de implementar una aplicación web en el servidor Tomcat es introducir la información que proporcionamos a través de la interfaz web en un archivo [contexte].xml ubicado en la carpeta [<tomcat>\conf\Catalina\localhost], donde [contexte] es el nombre de la aplicación web.

Volvamos a la interfaz de administración de Tomcat:

Image

Eliminemos la aplicación [/exemple] junto con su enlace [Undeploy]:

Image

La aplicación [/exemple] ya no forma parte de la lista de aplicaciones activas. Ahora definamos el siguiente archivo [exemple.xml]:

<Context docBase="C:/data/travail/2006-2007/eclipse/dvp-jpa/annexes/tomcat/exemple">
</Context>

El archivo XML consta de una única etiqueta <Context> cuyo atributo docBase define la carpeta que contiene la aplicación web que se va a implementar. Coloquemos este archivo en <tomcat>\conf\Catalina\localhost:

Image

Detengamos y reiniciemos Tomcat si es necesario, y luego veamos la lista de aplicaciones activas con el administrador de Tomcat:

Image

La aplicación [/exemple] aparece correctamente. Accedamos, con un navegador, a la URL:

[http://localhost:8080/exemple/exemple.html]:

Image

Una aplicación web implementada de esta manera puede eliminarse de la lista de aplicaciones implementadas, de la misma manera que antes, mediante el enlace [Undeploy]:

Image

En este caso, el archivo [exemple.xml] se elimina automáticamente de la carpeta [<tomcat>\conf\Catalina\localhost].

Por último, para implementar una aplicación web en Tomcat, también se puede definir su contexto en el archivo [<tomcat>\conf\server.xml]. No profundizaremos en este punto aquí.

5.3.6. Aplicación web con página de inicio

Cuando solicitamos la URL [http://localhost:8080/exemple/], obtenemos la siguiente respuesta:

Image

Con algunas versiones anteriores de Tomcat, hubiéramos obtenido el contenido de la carpeta física de la aplicación [/exemple].

Podemos hacer que, cuando se solicite el contexto, se muestre una página de inicio. Para ello, creamos un archivo [web.xml] que colocamos en la carpeta <ejemplo>\WEB-INF, donde <ejemplo> es la carpeta física de la aplicación web [/exemple]. Este archivo es el siguiente:

<?xml version="1.0" encoding="ISO-8859-1"?>
<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">

  <display-name>Application Exemple</display-name>
  <description>Application web minimale</description>
    <welcome-file-list>
        <welcome-file>/exemple.html</welcome-file>
    </welcome-file-list>    
</web-app>
  • líneas 2-5: la etiqueta raíz <web-app> con atributos obtenidos al copiar y pegar del archivo [web.xml] de la aplicación [/admin] de Tomcat (<tomcat>/server/webapps/admin/WEB-INF/web.xml).
  • línea 7: el nombre de visualización de la aplicación web. Es un nombre libre que tiene menos restricciones que el nombre de contexto de la aplicación. Se pueden incluir espacios, por ejemplo, lo cual no es posible con el nombre de contexto. Este nombre lo muestra, por ejemplo, el administrador de Tomcat:

Image

  1. línea 8: descripción de la aplicación web. Este texto se puede obtener posteriormente mediante programación.
  2. líneas 9-11: la lista de archivos de bienvenida. La etiqueta <welcome-file-list> sirve para definir la lista de vistas que se mostrarán cuando un cliente solicite el contexto de la aplicación. Puede haber varias vistas. Se muestra al cliente la primera que se encuentre. Aquí solo tenemos una: [/exemple.html]. Así, cuando un cliente solicite la URL [/exemple], en realidad se le entregará la URL [/exemple/exemple.html].

Guardemos este archivo [web.xml] en <ejemplo>\WEB-INF:

Image

Si Tomcat sigue activo, es posible forzar que recargue la aplicación web [/exemple] con el enlace [Recharger]:

Image

Durante esta operación de «recarga», Tomcat vuelve a leer el archivo [web.xml] contenido en [<exemple>\WEB-INF], si existe. Este será el caso aquí. Si Tomcat se hubiera detenido, reinícialo.

Con un navegador, solicitemos el archivo URL y [http://localhost:8080/exemple/]:

Image

El mecanismo de los archivos de bienvenida ha funcionado.

5.3.7. Integración de Tomcat en Eclipse

Ahora vamos a integrar Tomcat en Eclipse. Esta integración permite:

  • iniciar y detener Tomcat desde Eclipse
  • desarrollar aplicaciones web en Java y ejecutarlas en Tomcat. La integración entre Eclipse y Tomcat permite depurar la ejecución de la aplicación, incluyendo la ejecución de las clases de Java (servlets) ejecutadas por Tomcat.

Iniciemos Eclipse y luego veamos la vista [Servers]:

  • en [1]: Ventana/Mostrar vista/Otra
  • en [2]: selecciona la vista [Servers] y haz [OK]
  • en [1], tenemos una nueva vista [Servers]
  • en [2], haz clic con el botón derecho en la vista y solicita crear un nuevo servidor [New/Server]
  • en [3], se selecciona el servidor [Tomcat 5.5] y luego se pasa a [Next]
  • a [4], se indica la carpeta de instalación de Tomcat 5.5
  • en [5], se indica que por el momento no hay proyectos de Eclipse/Tomcat. Se ejecuta [Finish]

La adición del servidor se concreta con la incorporación de una carpeta en el explorador de proyectos de Eclipse [6] y la aparición de un servidor en la vista [servers] [7]:

En la vista [Servers] aparecen todos los servidores registrados; en este caso, solo el servidor Tomcat 5.5 que acabamos de registrar. Al hacer clic con el botón derecho sobre él, se accede a los comandos que permiten iniciar, detener y reiniciar el servidor:

Image

En la imagen anterior, iniciamos el servidor. Al iniciarse, se registran varios registros en la vista [Console]:

1
2
3
4
5
6
7
8
16 mai 2007 09:51:57 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
...
16 mai 2007 09:51:57 org.apache.coyote.http11.Http11BaseProtocol init
INFO: Initialisation de Coyote HTTP/1.1 sur http-8080
...
INFO: Find registry server-registry.xml at classpath resource
16 mai 2007 09:51:58 org.apache.catalina.startup.Catalina start
INFO: Server startup in 828 ms

Entender estos registros requiere cierta práctica. No nos detendremos en ellos por el momento. Sin embargo, es importante verificar que no indiquen errores al cargar los contextos. De hecho, al iniciarse, el servidor Tomcat/Eclipse intentará cargar el contexto de las aplicaciones que administra. Cargar el contexto de una aplicación implica procesar su archivo [web.xml] y cargar una o varias clases que lo inicializan. En este proceso pueden ocurrir varios tipos de errores:

  • el archivo [web.xml] tiene errores de sintaxis. Este es el error más frecuente. Se recomienda utilizar una herramienta capaz de verificar la validez de un documento XML durante su creación.
  • No se encontraron algunas de las clases que se deben cargar. Estas se buscan en [WEB-INF/classes] y [WEB-INF/lib]. Por lo general, hay que verificar la presencia de las clases necesarias y la ortografía de las declaradas en el archivo [web.xml].

El servidor iniciado desde Eclipse no tiene la misma configuración que el instalado en el párrafo 5.3. Para asegurarnos de ello, solicitemos la URL [http://localhost:8080] con un navegador:

Image

Esta respuesta no indica que el servidor no funcione, sino que el recurso / que se le solicita no está disponible. Con el servidor Tomcat integrado en Eclipse, estos recursos serán proyectos web. Lo veremos más adelante. Por ahora, detengamos Tomcat:

Image

El modo de funcionamiento anterior se puede modificar. Regresemos a la vista [Servers] y hagamos doble clic en el servidor Tomcat para acceder a sus propiedades:

1

La casilla de selección [1] es la responsable del funcionamiento anterior. Cuando está marcada, las aplicaciones web desarrolladas en Eclipse no se declaran en los archivos de configuración del servidor Tomcat asociado, sino en archivos de configuración separados. Al hacerlo, no se dispone de las aplicaciones definidas por defecto en el servidor Tomcat: [admin] y [manager], que son dos aplicaciones útiles. Por lo tanto, vamos a desmarcar [1] y reiniciar Tomcat:

Una vez hecho esto, accedamos a la URL [http://localhost:8080] con un navegador:

Image

Vemos aquí el funcionamiento descrito en el párrafo 5.3.4.

En nuestros ejemplos anteriores, utilizamos un navegador externo a Eclipse. También se puede utilizar un navegador interno de Eclipse:

Image

En la imagen anterior, seleccionamos el navegador interno. Para iniciarlo desde Eclipse, se puede utilizar el siguiente ícono:

Image

El navegador que realmente se iniciará será el seleccionado mediante la opción [Window -> Web Browser]. En este caso, obtenemos el navegador interno:

1

Image

Si es necesario, iniciemos Tomcat desde Eclipse y solicitemos en [1] la URL [http://localhost:8080]:

Image

Sigamos el enlace [Tomcat Manager]:

Image

Se solicita el par [login / mot de passe] necesario para acceder a la aplicación [manager]. Según la configuración de Tomcat que hicimos anteriormente, podemos ingresar [admin / admin] o [manager / manager]. A continuación, se muestra la lista de aplicaciones implementadas:

Image

5.4. SGBD Firebird

5.4.1. SGBD Firebird

El SGBD Firebird está disponible en la URL [http://www.firebirdsql.org/]:

  • en [1]: se utiliza la opción [Download.Firebird Relational Database]
  • en [2]: se especifica la versión deseada de Firebird
  • en [3]: se descarga el archivo binario de instalación

Una vez descargado el archivo [3], haz doble clic en él para instalar Firebird SGBD. El archivo SGBD se instala en una carpeta cuyo contenido es similar al siguiente:

Image

Los archivos binarios se encuentran en la carpeta [bin]:

Image

fbguard.exe
permite iniciar/detener el SGBD
isql.exe
cliente de línea que permite administrar bases de datos

Cabe señalar que, por defecto, el administrador de SGBD se llama [SYSDBA] y su contraseña es [masterkey]. Se han instalado menús en [Démarrer]:

Image

La opción [Firebird Guardian] permite iniciar o detener el SGBD. Tras el inicio, el ícono del SGBD permanece en la barra de tareas de Windows:

Para crear y administrar bases de datos Firebird con el cliente de línea de comandos [isql.exe], es necesario leer la documentación que se incluye con el producto y a la que se puede acceder a través de los accesos directos de Firebird en [Démarrer/Programmes/Firebird 2.0].

Una forma rápida de trabajar con Firebird y aprender el lenguaje SQL es utilizar un cliente gráfico. Un ejemplo de este tipo de cliente es IB-Expert, que se describe en el párrafo siguiente.

5.4.2. Trabajar con Firebird SGBD con IB- Expert

El sitio web principal de IB-Expert es [http://www.ibexpert.com/].

  • en [1], se selecciona IBExpert
  • En [2], se selecciona la descarga después de haber elegido, si es necesario, el idioma deseado
  • en [3], se selecciona la versión denominada «personal», ya que es gratuita. Sin embargo, es necesario registrarse en el sitio.
  • En [4], se descarga IBExpert

IBExpert se instala en una carpeta similar a la siguiente:

Image

El ejecutable es [ibexpert.exe]. Normalmente hay un acceso directo disponible en el menú [Démarrer]:

Image

Una vez ejecutado, IBExpert muestra la siguiente ventana:

Image

Usemos la opción [Database/Create Database] para crear una base de datos:

Image

Server
(Serveur)
puede ser [local] o [remote]. Aquí nuestro servidor está en la misma máquina que [IBExpert]. Elegimos
[local]
Database
(Base de données)
utilizar el botón del tipo [dossier] del menú desplegable para seleccionar el archivo de la base de datos. Firebird coloca toda la
base de datos en un solo archivo. Esa es una de sus ventajas.
La base de datos se transfiere de una computadora a otra simplemente copiando el archivo.
El sufijo [.fdb] se agrega automáticamente.
Username
SYSDBA es el administrador predeterminado de las distribuciones actuales de Firebird
Password
(Nom de l'utilisateur)
masterkey es la contraseña del administrador SYSDBA de las distribuciones
actuales de Firebird
Dialect
el dialecto SQL que se debe utilizar
Register Database
(Référencer la base de données)
si la casilla está marcada, IBExpert mostrará un enlace a la base de datos creada después de haberla creado

Si al hacer clic en el botón de creación [OK] aparece el siguiente aviso:

Image

es porque no has iniciado Firebird. Inícialo. Aparecerá una nueva ventana:

Image

Charset
(Jeu de caractères)
Familia de caracteres a utilizar. Se recomienda seleccionar en la lista desplegable la familia
[ISO-8859-1], que permite utilizar los caracteres latinos acentuados.
Server version
(Version du serveur)
[IBExpert] es capaz de manejar diferentes SGBD derivados de Interbase.
Seleccione la versión de Firebird que tenga instalada.

Una vez que [Register] haya validado esta nueva ventana, obtendremos el resultado [1] en la ventana [Database Explorer]. Es posible que esta ventana se cierre por error. Para recuperarla, ejecute [2]:

Para acceder a la base de datos creada, basta con hacer doble clic en su enlace. IBExpert muestra entonces un árbol de navegación que permite acceder a las propiedades de la base de datos:

Image

5.4.3. Creación de una tabla de datos

Creemos una tabla. Hacemos clic con el botón derecho en [Tables] (véase la ventana anterior) y seleccionamos la opción [New Table]. Aparece la ventana de definición de las propiedades de la tabla:

Comencemos por asignarle el nombre [ARTICLES] a la tabla utilizando el campo de entrada [1]:

Image

Usemos el campo de entrada [2] para definir una clave primaria [ID]:

Image

Para convertir un campo en clave primaria, haz doble clic en el campo [PK] (Primary Key) del campo. Agreguemos campos con el botón ubicado encima de [3]:

Image

Mientras no hayamos «compilado» nuestra definición, la tabla no se creará. Usemos el botón [Compile] que se encuentra arriba para finalizar la definición de la tabla. IBExpert prepara las consultas SQL para generar la tabla y solicita confirmación:

Image

Curiosamente, IBExpert muestra las consultas SQL que ha ejecutado. Esto permite aprender tanto el lenguaje SQL como el dialecto SQL, que posiblemente sea propio y se utilice. El botón [Commit] permite validar la transacción en curso, mientras que [Rollback] la cancela. Aquí la aceptamos con [Commit]. Una vez hecho esto, IBExpert agrega la tabla creada a la estructura de nuestra base de datos:

Image

Al hacer doble clic en la tabla, se accede a sus propiedades:

Image

El panel [Constraints] nos permite agregar nuevas restricciones de integridad a la tabla. Abrámoslo:

Image

Aquí encontramos la restricción de clave primaria que creamos. Podemos agregar otras restricciones:

  • claves externas [Foreign Keys]
  • restricciones de integridad de campos [Checks]
  • restricciones de unicidad de campos [Uniques]

Tenga en cuenta que:

  • los campos [ID, PRIX, STOCKACTUEL, STOKMINIMUM] deben ser >0
  • el campo [NOM] debe ser distinto de vacío y único

Abramos el panel [Checks] y hagamos clic con el botón derecho en su área de definición de restricciones para agregar una nueva restricción:

Image

Definamos las restricciones deseadas:

Image

Cabe señalar que la restricción [NOM<>''] utiliza dos apóstrofos y no comillas. Compilemos estas restricciones con el botón [Compile] que se encuentra arriba:

Image

Una vez más, IBExpert demuestra su carácter didáctico al indicar las consultas SQL que ha ejecutado. Pasemos ahora al panel [Constraints/Uniques] para indicar que el nombre debe ser único. Esto significa que no puede haber dos nombres iguales en la tabla.

Image

Definamos la restricción:

Image

Luego, compilémosla. Una vez hecho esto, abramos el panel [DDL] (Lenguaje de Definición de Datos) de la tabla [ARTICLES]:

Image

Este panel proporciona el código SQL para generar la tabla con todas sus restricciones. Podemos guardar este código en un script para ejecutarlo más adelante:

SET SQL DIALECT 3;
SET NAMES ISO8859_1;
CREATE TABLE ARTICLES (
    ID            INTEGER NOT NULL,
    NOM           VARCHAR(20) NOT NULL,
    PRIX          DOUBLE PRECISION NOT NULL,
    STOCKACTUEL   INTEGER NOT NULL,
    STOCKMINIMUM  INTEGER NOT NULL
);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_ID check (ID>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_PRIX check (PRIX>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_STOCKACTUEL check (STOCKACTUEL>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_STOCKMINIMUM check (STOCKMINIMUM>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_NOM check (NOM<>'');
ALTER TABLE ARTICLES ADD CONSTRAINT UNQ_NOM UNIQUE (NOM);
ALTER TABLE ARTICLES ADD CONSTRAINT PK_ARTICLES PRIMARY KEY (ID);

5.4.4. Inserción de datos en una tabla

Ahora es el momento de ingresar datos en la tabla [ARTICLES]. Para ello, utilicemos su panel [Data]:

Image

Los datos se ingresan haciendo doble clic en los campos de entrada de cada fila de la tabla. Se agrega una nueva fila con el botón [+] y se elimina una fila con el botón [-]. Estas operaciones se realizan en una transacción que se valida con el botón [Commit Transaction] (véase más arriba). Sin esta validación, los datos se perderán.

5.4.5. El editor SQL de [IB-Expert]

El lenguaje SQL (Lenguaje de Consulta Estructurado) permite al usuario:

  1. crear tablas especificando el tipo de datos que almacenarán y las restricciones que dichos datos deben cumplir
  2. insertar datos en ellas
  3. modificar algunos de ellos
  4. eliminar otros
  5. explotar su contenido para obtener información
  6. ...

IBExpert permite a un usuario realizar las operaciones del 1 al 4 de manera gráfica. Acabamos de verlo. Cuando la base de datos contiene numerosas tablas, cada una con cientos de filas, se necesita información que es difícil de obtener visualmente. Supongamos, por ejemplo, que una tienda virtual en la web tiene miles de compradores al mes. Todas las compras se registran en una base de datos. Al cabo de seis meses, se descubre que un producto «X» tiene fallas. Se desea contactar a todas las personas que lo compraron para que devuelvan el producto y lo cambien sin costo alguno. ¿Cómo encontrar las direcciones de estos compradores?

  1. Se pueden revisar visualmente todas las tablas y buscar a esos compradores. Esto tomará unas horas.
  2. Se puede ejecutar una orden SQL que generará la lista de estas personas en unos segundos

El lenguaje SQL resulta útil siempre que

  • la cantidad de datos en las tablas es considerable
  • cuando hay muchas tablas relacionadas entre sí
  • la información que se busca está distribuida en varias tablas
  • ...

Ahora presentamos el editor SQL de IBExpert. Se puede acceder a él mediante la opción [Tools/SQL Editor] o [F12]:

Image

De esta manera, tenemos acceso a un editor avanzado de consultas SQL con el que podemos experimentar con consultas. Escribamos una consulta:

Image

Ejecutamos la consulta SQL con el botón [Execute] que se encuentra arriba. Obtenemos el siguiente resultado:

Image

Arriba, la pestaña [Results] muestra la tabla de resultados de la orden SQL [Select]. Para emitir una nueva orden SQL, basta con regresar a la pestaña [Edit]. Allí se encuentra la orden SQL que ya se ejecutó.

Image

Varios botones de la barra de herramientas son útiles:

  • el botón [New Query] permite pasar a una nueva consulta SQL:

Image

A continuación, aparece una página de edición en blanco:

Image

A continuación, se puede ingresar una nueva orden SQL:

Image

y ejecutarla:

Image

Volvamos a la pestaña [Edit]. Las diferentes órdenes SQL emitidas se almacenan mediante [IBExpert]. El botón [Previous Query] permite regresar a una orden SQL emitida anteriormente:

Image

De esta manera, se regresa a la consulta anterior:

Image

El botón [Next Query] permite, por su parte, pasar a la orden siguiente, SQL:

Image

A continuación, se encuentra la orden SQL, que sigue en la lista de órdenes SQL guardadas:

Image

El botón [Delete Query] permite eliminar una orden SQL de la lista de órdenes guardadas:

Image

El botón [Clear Current Query] permite borrar el contenido del editor para la orden SQL que se muestra:

Image

El botón [Commit] permite confirmar definitivamente los cambios realizados en la base de datos:

Image

El botón [RollBack] permite deshacer los cambios realizados en la base de datos desde el último [Commit]. Si no se ha ejecutado ningún [Commit] desde que se conectó a la base de datos, entonces se deshacen los cambios realizados desde esa conexión.

Image

Veamos un ejemplo. Insertemos una nueva fila en la tabla:

Image

Se ejecuta el comando SQL, pero no se muestra nada. No sabemos si la inserción se ha realizado. Para averiguarlo, ejecutemos el comando SQL después de [New Query]:

Image

Se obtiene el siguiente resultado con [Execute]:

Image

Por lo tanto, la fila se ha insertado correctamente. Ahora revisemos el contenido de la tabla de otra manera. Hagamos doble clic en la tabla [ARTICLES] en el explorador de bases de datos:

Image

Se obtiene la siguiente tabla:

Image

El botón con la flecha que se muestra arriba permite actualizar la tabla. Tras la actualización, la tabla anterior no cambia. Da la impresión de que la nueva fila no se ha insertado. Regresemos al editor SQL (F12) y luego validemos la orden SQL emitida con el botón [Commit]:

Image

Una vez hecho esto, regresemos a la tabla [ARTICLES]. Podemos observar que nada ha cambiado, incluso al utilizar el botón [Refresh]:

Image

Ahora, abramos la pestaña [Fields] y luego regresemos a la pestaña [Data]. Esta vez, la línea insertada aparece correctamente:

Image

Cuando comienza la ejecución de las diferentes órdenes SQL, el editor abre lo que se conoce como una transacción en la base de datos. Los cambios realizados por estas órdenes SQL del editor SQL solo serán visibles mientras permanezcamos en el mismo editor SQL (se pueden abrir varios). Es como si el editor SQL no trabajara en la base de datos real, sino en una copia propia. En realidad, no es exactamente así como ocurre, pero esta imagen puede ayudarnos a comprender el concepto de transacción. Todos los cambios realizados en la copia durante una transacción solo serán visibles en la base de datos real una vez que hayan sido validados por un [Commit Transaction]. La transacción actual se da por terminada y comienza una nueva transacción.

Las modificaciones realizadas durante una transacción pueden anularse mediante una operación llamada [Rollback]. Hagamos el siguiente experimento. Iniciemos una nueva transacción (basta con ejecutar [Commit] en la transacción actual) con la orden SQL siguiente:

Image

Ejecutemos esta orden, que elimina todas las filas de la tabla [ARTICLES], y luego ejecutemos [New Query], la nueva orden SQL, de la siguiente manera:

Image

Obtenemos el siguiente resultado:

Image

Se han eliminado todas las filas. Recordemos que esto se realizó en una copia de la tabla [ARTICLES]. Para verificarlo, hagamos doble clic en la tabla [ARTICLES] que se muestra a continuación:

Image

y veamos la pestaña [Data]:

Image

Incluso si usamos el botón [Refresh] o pasamos a la pestaña [Fields] para luego regresar a la pestaña [Data], el contenido anterior no cambia. Esto ya se ha explicado. Estamos en otra transacción que trabaja con su propia copia. Ahora regresemos al editor SQL (F12) y usemos el botón [RollBack] para deshacer las eliminaciones de líneas que se han realizado:

Image

Se nos solicita confirmación:

Image

Confirmemos. El editor SQL confirma que los cambios se han revertido:

Image

Volvamos a ejecutar la consulta SQL anterior para verificar. Encontramos las filas que habían sido eliminadas:

Image

La operación [Rollback] ha devuelto la copia en la que trabaja el editor SQL al estado en que se encontraba al inicio de la transacción.

5.4.6. Exportación de una base de datos Firebird a un script SQL

Cuando se trabaja con varios SGBD, como es el caso en el tutorial «Persistencia en Java 5 en la práctica», resulta útil poder exportar una base de datos desde un SGBD 1 a un script SQL para luego importar este último a un SGBD 2. Esto evita una serie de operaciones manuales. Sin embargo, esto no siempre es posible, ya que los archivos SGBD suelen tener extensiones SQL propias.

Veamos cómo exportar la base de datos [dbarticles] anterior a un script SQL:

  • a [1]: Herramientas / Extraer el MetaData, para extraer los metadatos
  • en [2]: pestaña Metaobjetos
  • en [3]: seleccionar la tabla [Articles] de la que se desea extraer la estructura (metadatos)
  • en [4]: para trasladar a la derecha el objeto seleccionado a la izquierda
  • en [5]: la tabla [ARTICLES] formará parte de los metadatos extraídos
  • en [6]: la pestaña [Table de données] sirve para seleccionar las tablas de las que se desea extraer el contenido (en el paso anterior, se exportaba la estructura de la tabla)
  • en [7]: para mover a la derecha el objeto seleccionado a la izquierda
  • en [8]: el resultado obtenido
  • en [9]: la pestaña [Options] permite configurar ciertos parámetros de la extracción
  • en [10]: desmarcamos las opciones relacionadas con la generación de órdenes SQL que permiten conectarse a la base de datos. Son propias de Firebird y, por lo tanto, no nos interesan.
  • en [11]: la pestaña [Sortie] permite especificar dónde se generará el script SQL
  • en [12]: se especifica que el script debe generarse en un archivo
  • en [13]: se especifica la ubicación de ese archivo
  • en [14]: se inicia la generación del script SQL

El script generado, sin comentarios, es el siguiente:

SET SQL DIALECT 3;
SET NAMES ISO8859_1;

CREATE TABLE ARTICLES (
    ID            INTEGER NOT NULL,
    NOM           VARCHAR(20) NOT NULL,
    PRIX          DOUBLE PRECISION NOT NULL,
    STOCKACTUEL   INTEGER NOT NULL,
    STOCKMINIMUM  INTEGER NOT NULL
);

INSERT INTO ARTICLES (ID, NOM, PRIX, STOCKACTUEL, STOCKMINIMUM) VALUES (1, 'article1', 100, 10, 1);
INSERT INTO ARTICLES (ID, NOM, PRIX, STOCKACTUEL, STOCKMINIMUM) VALUES (2, 'article2', 200, 20, 2);
INSERT INTO ARTICLES (ID, NOM, PRIX, STOCKACTUEL, STOCKMINIMUM) VALUES (3, 'article3', 300, 30, 3);

COMMIT WORK;

ALTER TABLE ARTICLES ADD CONSTRAINT CHK_ID check (ID>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_PRIX check (PRIX>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_STOCKACTUEL check (STOCKACTUEL>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_STOCKMINIMUM check (STOCKMINIMUM>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_NOM check (NOM<>'');
ALTER TABLE ARTICLES ADD CONSTRAINT UNQ_NOM UNIQUE (NOM);
ALTER TABLE ARTICLES ADD CONSTRAINT PK_ARTICLES PRIMARY KEY (ID);

Nota: las líneas 1 y 2 son específicas de Firebird. Deben eliminarse del script generado para obtener un SQL genérico.

5.4.7. Controlador JDBC de Firebird para

Un programa Java accede a los datos de una base de datos a través de un controlador JDBC específico para el SGBD utilizado:

En una arquitectura de múltiples capas como la anterior, el controlador JDBC [1] es utilizado por la capa [dao] (Objeto de Acceso a Datos) para acceder a los datos de una base de datos.

El controlador JDBC de Firebird está disponible en la URL desde donde se descargó Firebird:

  • en [1]: se elige descargar el controlador JDBC
  • en [2]: se elige un controlador JDBC compatible con JDK 1.5
  • en [3]: el archivo que contiene el controlador JDBC es [jaybird-full-2.1.1.jar]. Extraeremos este archivo. Se utilizará para todos los ejemplos JPA con Firebird.

Lo colocamos en una carpeta a la que llamaremos en adelante <jdbc>:

Image

Para verificar este controlador JDBC, utilizaremos Eclipse y el complemento SQL Explorer (párrafo 5.2.6). Comenzamos por declarar el controlador JDBC de Firebird:

  • en [1]: ve a Ventana / Preferencias
  • en [2]: selecciona la opción SQL Explorer / JDBC Drivers
  • en [3]: selecciona el controlador JDBC para Firebird
  • en [4]: pasar a la fase de configuración
  • en [5]: pasar a la pestaña [Extra Class Path]
  • con [6], seleccionar el archivo del controlador JDBC. Una vez hecho esto, este aparecerá en [7]. Aquí se seleccionará el controlador que se colocó previamente en la carpeta <jdbc>
  • en [8]: el nombre de la clase Java del controlador JDBC. Se puede obtener mediante el botón [8b].
  • ejecutamos [OK] para validar la configuración
  • en [9]: el controlador JDBC de Firebird ya está configurado. Ya podemos comenzar a utilizarlo.
  • a [1]: abre una nueva perspectiva
  • en [2]: elegir la perspectiva [SQL Explorer]
  • en [3]: crear una nueva conexión
  • en [4]: asignarle un nombre
  • en [5]: seleccionar el controlador de Firebird JDBC de la lista desplegable
  • en [6]: especificar la URL de la base de datos a la que queremos conectarnos, en este caso: [jdbc:firebirdsql:localhost/3050:C:\data\2006-2007\eclipse\dvp-jpa\annexes\jpa\jpa.fdb]. [jpa.fdb] es la base de datos creada anteriormente con IBExpert.
  • en [7]: el nombre de usuario de la conexión, en este caso [sysdba], el administrador de Firebird
  • en [8]: su contraseña [masterkey]
  • validamos la configuración de la conexión mediante [OK]
  • en [1]: hacemos doble clic en el nombre de la conexión que queremos abrir
  • en [2]: se inicia sesión (sysdba, masterkey)
  • en [3]: la conexión está abierta
  • en [4]: se muestra la estructura de la base de datos. Se ve la tabla [ARTICLES]. Se selecciona.
  • en [5]: en la ventana [Database Detail], se muestran los detalles del objeto seleccionado en [4], en este caso la tabla [ARTICLES]
  • en [6]: la pestaña [Columns] muestra la estructura de la tabla
  • en [7]: la pestaña [Preview] muestra la estructura de la tabla

Se pueden ejecutar consultas SQL en la ventana [SQL Editor]:

  • en [1]: seleccione una conexión abierta
  • en [2]: ingrese la orden SQL que se ejecutará
  • en [3]: ejecutarla
  • en [4]: resumen de la orden ejecutada
  • en [5]: su resultado

5.5. El SGBD e al MySQL5

5.5.1. Instalación

El SGBD MySQL5 está disponible en la URL [http://dev.mysql.com/downloads/]:

  • en [1]: elija la versión deseada
  • en [2]: elige una versión de Windows
  • en [3]: elige la versión de Windows que desees
  • en [4]: el archivo ZIP descargado contiene un ejecutable [Setup.exe] [4b] que debe descomprimir y ejecutar para instalar MySQL5
  • en [5]: elige una instalación típica
  • en [6]: una vez finalizada la instalación, se puede configurar el servidor MySQL5
  • en [7]: elige una configuración estándar, la que te haga menos preguntas
  • en [8]: el servidor MySQL5 será un servicio de Windows
  • en [9]: por defecto, el administrador del servidor es root sin contraseña. Se puede mantener esta configuración o asignarle una nueva contraseña a root. Si la instalación de MySQL5 se realiza después de desinstalar una versión anterior, esta operación podría fallar. Hay menos formas de revertirla.
  • En [10]: se solicita la configuración del servidor

La instalación de MySQL5 crea una carpeta en [Démarrer / Programmes ]:

Image

Se puede utilizar [MySQL Server Instance Config Wizard] para reconfigurar el servidor:

  • en [3]: cambiamos la contraseña de root (en este caso, root/root)

5.5.2. Iniciar / Detener MySQL5

El servidor MySQL5 se instaló como un servicio de Windows de inicio automático, c.a.d se inicia al arrancar Windows. Este modo de funcionamiento no es muy práctico. Vamos a cambiarlo:

[Démarrer / Panneau de configuration / Performances et maintenance / Outils d'administration / Services ]:

  • en [1]: hacemos doble clic en [Services]
  • en [2]: vemos que hay un servicio llamado [MySQL], que está en ejecución ([3]) y que su inicio es automático ([4]).

Para modificar este comportamiento, hacemos doble clic en el servicio [MySQL]:

  • en [1]: configuramos el servicio para que se inicie manualmente
  • en [2]: lo detenemos
  • en [3]: confirmamos la nueva configuración del servicio

Para iniciar y detener manualmente el servicio MySQL, se pueden crear dos accesos directos:

  • en [1]: el acceso directo para iniciar MySQL5
  • [2]: el acceso directo para detenerlo

5.5.3. Clientes de administración de MySQL

En el sitio de MySQL, se pueden encontrar clientes de administración de SGBD:

  • en [1]: elige [MySQL GUI Tools], que incluye varios clientes gráficos que permiten tanto administrar el SGBD como utilizarlo
  • en [2]: elija la versión de Windows que le convenga
  • en [3]: se descarga un archivo .msi para ejecutarlo
  • en [4]: una vez completada la instalación, aparecerán nuevos accesos directos en la carpeta [Menu Démarrer / Programmes / mySQL].

Ejecutemos MySQL (a través de los accesos directos que has creado) y, a continuación, ejecutemos [MySQL Administrator] desde el menú anterior:

  • en [1]: ingresa la contraseña del usuario root (root en este caso)
  • en [2]: ya estamos conectados y vemos que MySQL está activo

5.5.4. Creación de un usuario jpa y una base de datos jpa

El tutorial utiliza MySQL5 con una base de datos llamada jpa y un usuario con el mismo nombre. Ahora los crearemos. Primero, el usuario:

  • en [1]: seleccionamos [User Administration]
  • en [2]: hacemos clic con el botón derecho en la sección [User accounts] para crear un nuevo usuario
  • en [3]: el usuario se llama jpa y su contraseña es jpa
  • en [4]: se confirma la creación
  • en [5]: el usuario [jpa] aparece en la ventana [User Accounts]

Ahora, la base de datos:

  • en [1]: selección de la opción [Catalogs]
  • en [2]: clic derecho en la ventana [Schemata] para crear un nuevo esquema (que designa una base de datos)
  • en [3]: se le da nombre al nuevo esquema
  • en [4]: aparece en la ventana [Schemata]
  • en [5]: se selecciona el esquema [jpa]
  • en [6]: aparecen los objetos del esquema [jpa], en particular las tablas. Todavía no hay ninguna. Con un clic derecho se podrían crear. Dejamos que el lector lo haga.

Volvamos al usuario [jpa] para otorgarle todos los derechos sobre el esquema [jpa]:

  • en [1], luego en [2]: seleccionamos el usuario [jpa]
  • en [3]: se selecciona la pestaña [Schema Privileges]
  • en [4]: se selecciona el esquema [jpa]
  • en [5]: le daremos al usuario [jpa] todos los privilegios sobre el esquema [jpa]
  • a [6]: validamos los cambios realizados

Para verificar que el usuario [jpa] pueda trabajar con el esquema [jpa], cerramos el administrador MySQL. Lo reiniciamos y, esta vez, nos conectamos con el nombre [jpa/jpa]:

  • en [1]: nos identificamos (jpa/jpa)
  • en [2]: la conexión se realizó con éxito y en [Schemata] vemos los esquemas sobre los que tenemos derechos. Vemos el esquema [jpa].

Ahora vamos a crear la misma tabla [ARTICLES] que con el Firebird SGBD utilizando el script SQL [schema-articles.sql] generado en el párrafo 5.4.6.

  • a [1]: utilice la aplicación [MySQL Query Browser]
  • en [2], [3], [4]: inicie sesión (jpa / jpa / jpa)
  • en [5]: abrir un script SQL para ejecutarlo
  • en [6]: seleccionar el script [schema-articles.sql] creado en el párrafo 5.4.6.
  • en [7]: el script cargado
  • en [8]: se ejecuta
  • en [9]: se ha creado la tabla [ARTICLES]

5.5.5. Controlador JDBC de MySQL5

El controlador JDBC de MySQL se puede descargar en el mismo lugar que el SGBD:

  • en [1]: elige el controlador JDBC que corresponda
  • en [2]: elige la versión de Windows adecuada
  • en [3]: en el archivo zip descargado, el archivo Java que contiene el controlador JDBC es [mysql-connector-java-5.0.5-bin.jar]. Lo extraeremos para utilizarlo en los ejemplos del tutorial JPA.

Lo colocamos igual que el anterior (párrafo 5.4.7) en la carpeta <jdbc>:

Para probar este controlador JDBC, utilizaremos Eclipse y el complemento SQL Explorer. Se invita al lector a seguir los pasos explicados en el párrafo 5.4.7. A continuación, presentamos algunas capturas de pantalla relevantes:

  • en [1]: se ha cambiado el nombre del archivo del controlador JDBC de MySQL5
  • en [2]: el controlador JDBC de MySQL5 está disponible
  • a [3]: definición de la conexión (usuario, contraseña)=(jpa, jpa)
  • en [4]: la conexión está activa
  • en [5]: la base conectada

5.6. El SGBD l PostgreSQL

5.6.1. Instalación

El SGBD PostgreSQL está disponible en la URL [http://www.postgresql.org/download/]:

  • en [1]: los sitios de descarga de PostgreSQL
  • en [2]: elige una versión para Windows
  • en [3]: elegir una versión con instalador
  • en [4]: el contenido del archivo zip descargado. Haz doble clic en el archivo [postgresql-8.2.msi]
  • en [5]: la primera página del asistente de instalación
  • en [6]: elige una instalación típica aceptando los valores predeterminados
  • en [6b]: creación de la cuenta de Windows que iniciará el servicio PostgreSQL; en este caso, la cuenta pgres con la contraseña pgres.
  • en [7]: dejar que PostgreSQL cree la cuenta [pgres] si aún no existe
  • en [8]: definir la cuenta de administrador de SGBD, en este caso «postgres» con la contraseña «postgres»
  • en [9] y [10]: acepta los valores predeterminados hasta el final del asistente. Se instalará PostgreSQL.

La instalación de PostgreSQL crea una carpeta en [Démarrer / Programmes ]:

Image

5.6.2. Iniciar / Detener PostgreSQL

El servidor PostgreSQL se ha instalado como un servicio de Windows de inicio automático; c.a.d se inicia al arrancar Windows. Este modo de funcionamiento no es muy práctico. Vamos a cambiarlo:

[Démarrer / Panneau de configuration / Performances et maintenance / Outils d'administration / Services ]:

  • en [1]: hacemos doble clic en [Services]
  • en [2]: vemos que existe un servicio llamado [PostgreSQL], que está en ejecución ([3]) y que su inicio es automático ([4]).

Para modificar este comportamiento, hacemos doble clic en el servicio [PostgreSQL]:

  • en [1]: configuramos el servicio para que se inicie manualmente
  • en [2]: lo detenemos
  • en [3]: confirmamos la nueva configuración del servicio

Para iniciar y detener manualmente el servicio PostgreSQL, se pueden utilizar los accesos directos de la carpeta [PostgreSQL]:

  • en [1]: el acceso directo para iniciar PostgreSQL
  • en [2]: el acceso directo para detenerlo

5.6.3. Administrar PostgreSQL

En la captura de pantalla anterior, la aplicación [pgAdmin III] (3) permite administrar el SGBD y el PostgreSQL. Iniciemos el SGBD y, a continuación, el [pgAdmin III] a través del menú anterior:

  • en [1]: haz doble clic en el servidor PostgreSQL para conectarte a él
  • a [2,3]: inicie sesión como administrador de SGBD, aquí (postgres / postgres)
  • en [4]: la única base de datos existente
  • en [5]: el único usuario existente

5.6.4. Creación de un usuario jpa y una base de datos jpa

El tutorial utiliza PostgreSQL con una base de datos llamada jpa y un usuario con el mismo nombre. Ahora los crearemos. Primero el usuario:

  • en [1]: creamos un nuevo rol (~usuario)
  • en [2]: creación del usuario jpa
  • en [3]: su contraseña es jpa
  • en [4]: se repite la contraseña
  • en [5]: se autoriza al usuario a crear bases de datos
  • en [6]: el usuario [jpa] aparece entre los roles de conexión

Ahora la base de datos:

  • en [1]: se crea una nueva conexión al servidor
  • en [2]: se llamará jpa
  • en [3]: máquina a la que queremos conectarnos
  • en [4]: el usuario que se conecta
  • en [5]: su contraseña. Se valida la configuración de la conexión mediante [OK]
  • en [6]: se ha creado la nueva conexión. Pertenece al usuario jpa. Este ahora creará una nueva base de datos:
  • n [1]: se agrega una nueva base
  • en [2]: su nombre es jpa
  • en [3]: su propietario es el usuario jpa creado anteriormente. Se valida mediante [OK]
  • en [4]: se ha creado la base de datos jpa. Con solo hacer clic en ella, nos conectamos a ella y podemos explorar su estructura:
  • en [5]: aparecen los objetos del esquema [jpa], en particular las tablas. Todavía no hay ninguna. Con un clic derecho se podrían crear. Dejamos que el lector lo haga.

Ahora vamos a crear la misma tabla [ARTICLES] que con las anteriores SGBD utilizando el script SQL [schema-articles.sql] generado en el párrafo 5.4.6.

  • en [1]: abrir el editor SQL
  • en [2]: abrir un script SQL
  • en [3]: seleccionar el script [schema-articles.sql] creado en el párrafo 5.4.6.
  • en [4]: el script cargado. Se ejecuta.
  • en [5]: se ha creado la tabla [ARTICLES].
  • en [6, 7]: su contenido

5.6.5. Controlador JDBC de PostgreSQL

El controlador JDBC de PostgreSQL está disponible en la carpeta [jdbc] de la carpeta de instalación de PostgreSQL:

Colocamos el archivo Jdbc, al igual que los anteriores (párrafo 5.4.7), en la carpeta <jdbc>:

Para probar este controlador JDBC, utilizaremos Eclipse y el complemento SQL Explorer. Se invita al lector a seguir los pasos explicados en el párrafo 5.4.7. A continuación, presentamos algunas capturas de pantalla relevantes:

  • en [1]: se ha cambiado el nombre del archivo del controlador JDBC de PostgreSQL
  • en [2]: el controlador JDBC de PostgreSQL está disponible
  • a [3]: definición de la conexión (usuario, contraseña)=(jpa, jpa)
  • en [4]: la conexión está activa
  • en [5]: base de datos conectada
  • en [6]: el contenido de la tabla [ARTICLES]

5.7. El SGBD a Oracle 10g Express

5.7.1. Instalación

El SGBD Oracle 10g Express está disponible en la URL [http://www.oracle.com/technology/software/products/database/xe/index.html]:

  • en [1]: el sitio de descargas de Oracle 10g Express
  • en [2]: elige una versión para Windows. Una vez descargado el archivo, ejecútalo:
  • en [1]: haz doble clic en el archivo [OracleXE.exe]
  • en [2]: la primera página del asistente de instalación
  • en [3]: acepta la licencia
  • en [4]: acepta los valores predeterminados.
  • en [5,6]: el usuario SYSTEM tendrá la contraseña «system».
  • en [7]: se inicia la instalación

La instalación de Oracle 10g Express crea una carpeta en [Démarrer / Programmes ]:

Image

5.7.2. Iniciar/Detener Oracle 10g

Al igual que en los SGBD anteriores, Oracle 10g se instaló como un servicio de Windows de inicio automático. Modificamos esta configuración:

[Démarrer / Panneau de configuration / Performances et maintenance / Outils d'administration / Services ]:

  • en [1]: hacemos doble clic en [Services]
  • en [2]: vemos que hay un servicio llamado [OracleServiceXE], que está en ejecución ([3]) y que su inicio es automático ([4]).
  • en [5]: otro servicio de Oracle, llamado «Listener», también está activo y se inicia automáticamente.

Para modificar este comportamiento, hacemos doble clic en el servicio [OracleServiceXE]:

  • en [1]: configuramos el servicio para que se inicie manualmente
  • en [2]: lo detenemos
  • en [3]: confirmamos la nueva configuración del servicio

Se procederá de la misma manera con el servicio [OracleXETNSListener] (véase [5] más arriba). Para iniciar y detener manualmente el servicio OracleServiceXE, se pueden utilizar los accesos directos de la carpeta [Oracle]:

  • en [1]: para iniciar el SGBD
  • en [2]: para detenerlo
  • en [3]: para administrarlo (lo cual lo inicia si aún no está en ejecución)

5.7.3. Creación de un usuario jpa y una base de datos jpa

En la captura de pantalla anterior, la aplicación [3] permite administrar el SGBD Oracle 10g Express. Iniciemos SGBD y [1], y luego la aplicación de administración [3] a través del menú anterior:

  • en [1]: inicie sesión como administrador de SGBD, aquí (system / system)
  • en [2]: se crea un nuevo usuario
  • en [4]: nombre de usuario
  • en [5, 6]: su contraseña, en este caso jpa
  • en [7]: se ha creado el usuario jpa

En Oracle, un usuario se asocia automáticamente a una base de datos con el mismo nombre. Por lo tanto, la base de datos jpa existe al mismo tiempo que el usuario jpa.

5.7.4. Creación de la tabla [ARTICLES] de la base de datos jpa

OracleXE se instaló con un cliente SQL que funciona en modo de línea de comandos. Se puede trabajar más cómodamente con SQL Developer, también proporcionado por Oracle. Se puede encontrar en el sitio web:

[http://www.oracle.com/technology/products/database/sql_developer/index.html]

  • en [1]: el sitio de descarga
  • en [2]: elige una versión para Windows sin JRE si ya lo tienes instalado (como es el caso aquí), ya que [SQL Developer] es una aplicación Java.
  • en [3]: descomprimir el archivo ZIP descargado
  • en [4]: ejecutar el archivo ejecutable [sqldeveloper.exe]
  • en [5]: al iniciar [SQL Developer] por primera vez, indica la ruta del JRE instalado en la máquina
  • en [5b]: crear una nueva conexión
  • en [6]: SQL Developer permite conectarse a diversos SGBD. Selecciona Oracle.
  • en [7]: nombre que se le da a la conexión que se está creando
  • en [8]: propietario de la conexión
  • en [9]: su contraseña (jpa)
  • en [10]: mantener los valores predeterminados
  • en [11]: para probar la conexión (Oracle debe estar en ejecución)
  • en [12]: para finalizar la configuración de la conexión
  • en [13]: los objetos de la base de datos jpa
  • en [14]: se pueden crear tablas. Al igual que en los casos anteriores, crearemos la tabla [ARTICLES] a partir del script creado en el párrafo 5.4.6.
  • en [15]: se abre un script SQL
  • en [16]: se designa el script SQL creado en el párrafo 5.4.6.
  • en [17]: el script que se ejecutará
  • en [18]: el resultado de la ejecución: se ha creado la tabla [ARTICLES]. Haz doble clic en ella para acceder a sus propiedades.
  • en [19]: el contenido de la tabla.

5.7.5. Controlador JDBC de OracleXE

El controlador JDBC de OracleXE está disponible en la carpeta [jdbc/lib] de la carpeta de instalación de OracleXE [1]:

Colocamos el archivo Jdbc [ojdbc14.jar], al igual que los anteriores (párrafo 5.4.7), en la carpeta <jdbc> [2]:

Para probar este controlador JDBC, utilizaremos Eclipse y el complemento SQL Explorer. Se invita al lector a seguir los pasos explicados en el párrafo 5.4.7. A continuación, presentamos algunas capturas de pantalla relevantes:

  • en [1]: se ha cambiado el nombre del archivo del controlador JDBC de OracleXE
  • en [2]: el controlador JDBC de OracleXE está disponible
  • a [3]: definición de la conexión (usuario, contraseña)=(jpa, jpa)
  • en [4]: la conexión está activa
  • en [5]: base de datos conectada
  • en [6]: el contenido de la tabla [ARTICLES]

5.8. El SGBD SQL Server Express 2005

5.8.1. Instalación

El SGBD SQL Server Express 2005 está disponible en la URL [http://msdn.microsoft.com/vstudio/express/sql/download/]:

  • en [1]: primero descarga e instala la plataforma .NET 2.0
  • en [2]: luego, instala y descarga SQL Server Express 2005
  • en [3]: luego, instalar y descargar SQL Server Management Studio Express, que permite administrar SQL Server

La instalación de SQL Server Express crea una carpeta en [Démarrer / Programmes ]:

  • en [1]: la aplicación de configuración de SQL Server. También permite iniciar o detener el servidor
  • en [2]: la aplicación de administración del servidor

5.8.2. Iniciar/detener el servidor SQL

Al igual que en los casos anteriores de SGBD, el servidor SQL Express se instaló como un servicio de Windows de inicio automático. Modificamos esta configuración:

[Démarrer / Panneau de configuration / Performances et maintenance / Outils d'administration / Services ]:

  • por [1]: hacemos doble clic en [Services]
  • En [2]: se observa que existe un servicio llamado [SQL Server], que está en ejecución ([3]) y que su inicio es automático ([4]).
  • En [5]: otro servicio vinculado al servidor SQL, llamado «SQL Server Browser», también está activo y se inicia automáticamente.

Para modificar este comportamiento, hacemos doble clic en el servicio [SQL Server]:

  • en [1]: configuramos el servicio para que se inicie manualmente
  • en [2]: lo detenemos
  • en [3]: confirmamos la nueva configuración del servicio

Se hará lo mismo con el servicio [SQL Server Browser] (véase [5] más arriba). Para iniciar y detener manualmente el servidor del servicio SQL, se puede utilizar la aplicación [1] de la carpeta [SQL server]:

  • en [1]: asegúrese de que el protocolo TCP/IP esté activo (enabled) y luego acceda a las propiedades del protocolo.
  • en [2]: en la pestaña [IP Addresses], opción [IPAll]:
    • el campo [TCP Dynamic ports] se deja en blanco
    • el puerto de escucha del servidor se establece en 1433 en [TCP Port]
  • en [3]: al hacer clic con el botón derecho del ratón en el servicio [SQL Server], se accede a las opciones de inicio y detención del servidor. Aquí, lo iniciamos.
  • en [4]: se inicia el servidor SQL

5.8.3. Creación de un usuario jpa y una base de datos jpa

Iniciemos el SGBD como se indicó anteriormente, y luego la aplicación de administración [1] a través del menú que se muestra a continuación:

  • en [1]: nos conectamos al servidor SQL como administrador de Windows
  • en [2]: se configuran las propiedades de la conexión
  • en [3]: se habilita un modo mixto de conexión al servidor: ya sea con un inicio de sesión de Windows (un usuario de Windows) o con un inicio de sesión de SQL Server (cuenta definida dentro de SQL Server, independiente de cualquier cuenta de Windows).
  • en [3b]: se crea un usuario de SQL Server
  • en [4]: opción [General]
  • en [5]: el nombre de usuario
  • en [6]: la contraseña (aquí jpa)
  • en [7]: opción [Server Roles]
  • en [8]: el usuario jpa tendrá permiso para crear bases de datos

Validamos esta configuración:

  • en [9]: se ha creado el usuario jpa
  • en [10]: nos desconectamos
  • en [11]: nos volvemos a conectar
  • en [12]: se inicia sesión como usuario jpa/jpa
  • en [13]: una vez conectado, el usuario jpa crea una base de datos
  • en [14]: la base se llamará jpa
  • en [15]: y pertenecerá al usuario jpa
  • en [16]: se ha creado la base de datos jpa

5.8.4. Creación de la tabla [ARTICLES] de la base de datos jpa

Al igual que en los ejemplos anteriores, vamos a crear la tabla [ARTICLES] a partir del script creado en el párrafo 5.4.6.

  • en [1]: se abre un script SQL
  • en [2]: se selecciona el script SQL creado en el párrafo 5.4.6, página 240.
  • en [3]: hay que volver a identificarse (jpa/jpa)
  • en [4]: el script que se ejecutará
  • en [5]: seleccionar la base de datos en la que se ejecutará el script
  • en [6]: ejecutarlo
  • en [7]: el resultado de la ejecución: se ha creado la tabla [ARTICLES].
  • en [8]: se solicita ver su contenido
  • en [9]: el contenido de la tabla.

5.8.5. Controlador JDBC de SQL Server Express

  • en [1]: una búsqueda en Google con el texto [Microsoft SQL Server 2005 JDBC Driver] nos lleva a la página de descarga del controlador JDBC. Seleccionamos la versión más reciente
  • en [2]: el archivo descargado. Hacemos doble clic en él. Se descomprime y se crea una carpeta en la que encontramos el controlador Jdbc [3]
  • en [4]: colocamos el archivo Jdbc [sqljdbc.jar], al igual que los anteriores (párrafo 5.4.7), en la carpeta <jdbc>

Para probar este controlador JDBC, utilizaremos Eclipse y el complemento SQL Explorer. Se invita al lector a seguir los pasos explicados en el párrafo 5.4.7. A continuación, presentamos algunas capturas de pantalla relevantes:

  • en [1]: se ha designado el archivo del controlador JDBC de SQL Server
  • en [2]: el controlador JDBC del servidor SQL está disponible
  • en [3]: definición de la conexión (usuario, contraseña)=(jpa, jpa)
  • en [4]: la conexión está activa
  • en [5]: base de datos conectada
  • en [6]: el contenido de la tabla [ARTICLES]

5.9. El SGBD e al HSQLDB

5.9.1. Instalación

El SGBD HSQLDB está disponible en la URL [http://sourceforge.net/projects/hsqldb]. Se trata de un SGBD escrito en Java, que ocupa muy poca memoria y administra bases de datos en memoria, no en disco. El resultado es una gran rapidez en la ejecución de las consultas. Esa es su principal ventaja. Las bases de datos creadas de esta manera en memoria pueden recuperarse cuando el servidor se apaga y se reinicia. De hecho, los comandos SQL emitidos para crear las bases se almacenan en un archivo de registro para ser reproducidos al siguiente inicio del servidor. De esta forma, se logra la persistencia de las bases de datos a lo largo del tiempo.

El método tiene sus limitaciones y HSQLDB no es un SGBD destinado a fines comerciales. Su principal ventaja radica en las pruebas o las aplicaciones de demostración. Por ejemplo, el hecho de que HSQLDB esté escrito en Java permite incluirlo en tareas de Ant (Another Neat Tool), una herramienta de Java para la automatización de tareas. De este modo, las pruebas diarias del código en desarrollo, automatizadas por Ant, podrán integrar pruebas de bases de datos administradas por SGBD y HSQLDB. El servidor se iniciará, se detendrá y se administrará mediante tareas de Java.

  • en [1]: el sitio de descargas
  • en [2]: descargar la versión más reciente
  • en [3]: descomprimir el archivo zip descargado
  • en [4]: la carpeta [hsqldb] resultante de la descompresión
  • en [5]: la carpeta [demo], que contiene el script para iniciar el servidor [hsql] y [6], y en [7], el script para iniciar una herramienta básica de administración del servidor.

5.9.2. Iniciar/Detener HSQLDB

Para iniciar el servidor HSQLDB, haz doble clic en la aplicación [runManager.bat] [6] que se muestra arriba:

  • en [1]: se observa que para detener el servidor, basta con presionar Ctrl-C en la ventana.

5.9.3. La base de datos [test]

La base de datos administrada por defecto se encuentra en la carpeta [data]:

  • en [1]: al iniciarse, el SGBD HSQL ejecuta el script llamado [test.script]
1
2
3
4
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
CREATE USER SA PASSWORD ""
GRANT DBA TO SA
SET WRITE_DELAY 10
  • línea 1: se crea un esquema [public]
  • línea 2: se crea un usuario [sa] con una contraseña vacía
  • línea 3: el usuario [sa] recibe derechos de administración

Al final, se ha creado un usuario con derechos de administración. Este es el usuario que utilizaremos a partir de ahora.

5.9.4. Controlador JDBC de HSQL

El controlador JDBC de SGBD HSQL se encuentra en la carpeta [lib]:

  • en [1]: el archivo [hsqldb.jar] contiene el controlador JDBC de SGBD y HSQL
  • en [2]: colocamos este archivo, al igual que los anteriores (párrafo 5.4.7), en la carpeta <jdbc>

Para verificar este controlador JDBC, utilizaremos Eclipse y el complemento SQL Explorer. Se invita al lector a seguir los pasos explicados en el párrafo 5.4.7. A continuación, presentamos algunas capturas de pantalla relevantes:

  • en [1]: [window / preferences / SQL Explorer / JDBC Drivers]
  • en [2]: se configura el servidor [HSQLDB]
  • en [3]: se indica el archivo [hsqldb.jar] que contiene el controlador JDBC
  • en [4]: el nombre de la clase Java del controlador JDBC
  • en [5]: el controlador JDBC ya está configurado

Una vez hecho esto, nos conectamos al servidor HSQL. Este debe iniciarse previamente.

  • en [6]: se crea una nueva conexión
  • en [7]: se le asigna un nombre
  • en [8]: queremos conectarnos al servidor HSQLDB
  • en [9]: la URL de la base de datos a la que queremos conectarnos. Será la base [test] vista anteriormente.
  • en [10]: nos conectamos como usuario [sa]. Ya vimos que era administrador de SGBD.
  • En [11]: el usuario [sa] no tiene contraseña.

Validamos la configuración de la conexión.

  • en [12]: nos conectamos
  • en [13]: se realiza la identificación
  • en [14]: ya estamos conectados
  • en [15]: el esquema [PUBLIC] aún no tiene ninguna tabla
  • en [16]: vamos a crear la tabla [ARTICLES] a partir del script [schema-articles.sql] creado en el párrafo 5.4.6.
  • en [17]: se selecciona el script
  • en [18]: el script que se ejecutará
  • en [19]: se ejecuta después de eliminar todos sus comentarios, ya que HSQLB no los acepta.
  • Una vez ejecutado el script, se actualiza en [20] la visualización de la base de datos
  • en [21]: la tabla [ARTICLES] sí está ahí
  • en [22]: su contenido

Apaguemos y luego reiniciemos el servidor HSQLDB. Una vez hecho esto, revisemos el archivo [test.script]:

1
2
3
4
5
6
7
8
9
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
CREATE MEMORY TABLE ARTICLES(ID INTEGER NOT NULL,NOM VARCHAR(20) NOT NULL,PRIX DOUBLE NOT NULL,STOCKACTUEL INTEGER NOT NULL,STOCKMINIMUM INTEGER NOT NULL,CONSTRAINT PK_ARTICLES PRIMARY KEY(ID),CONSTRAINT CHK_ID CHECK(ARTICLES.ID>0),CONSTRAINT CHK_PRIX CHECK(ARTICLES.PRIX>0),CONSTRAINT CHK_STOCKACTUEL CHECK(ARTICLES.STOCKACTUEL>0),CONSTRAINT CHK_STOCKMINIMUM CHECK(ARTICLES.STOCKMINIMUM>0),CONSTRAINT CHK_NOM CHECK(ARTICLES.NOM!=''),CONSTRAINT UNQ_NOM UNIQUE(NOM))
CREATE USER SA PASSWORD ""
GRANT DBA TO SA
SET WRITE_DELAY 10
SET SCHEMA PUBLIC
INSERT INTO ARTICLES VALUES(1,'article1',100.0E0,10,1)
INSERT INTO ARTICLES VALUES(2,'article2',200.0E0,20,2)
INSERT INTO ARTICLES VALUES(3,'article3',300.0E0,30,3)

Se observa que el archivo SGBD ha almacenado las diferentes órdenes SQL ejecutadas durante la sesión anterior y que las vuelve a ejecutar al iniciar la nueva sesión. Además, se observa (línea 2) que la tabla [ARTICLES] se crea en memoria (MEMORY). En cada sesión, las órdenes SQL emitidas se almacenan en [test.log] para ser copiadas al inicio de la siguiente sesión en [test.script] y reproducidas al inicio de la sesión.

5.10. El SGBD o de Apache Derby

5.10.1. Instalación

El SGBD Apache Derby está disponible en la URL [http://db.apache.org/derby/]. Se trata de un SGBD escrito también en Java y que, además, ocupa muy poco espacio en memoria. Presenta ventajas similares a las del HSQLDB. También puede integrarse en aplicaciones Java, c.a.d, formar parte integral de la aplicación y funcionar en la misma JVM.

  • en [1]: el sitio de descarga
  • en [2,3]: descarga la versión más reciente
  • en [3]: descomprimir el archivo zip descargado
  • en [4]: la carpeta [db-derby-*-bin] resultante de la descompresión
  • en [5]: la carpeta [bin], que contiene el script para iniciar el servidor [db derby] y [6], y en [7], el script para detenerlo.

5.10.2. Iniciar / Detener Apache Derby (Db Derby)

Para iniciar el servidor Db Derby, haz doble clic en la aplicación [startNetworkServer] [6] mencionada anteriormente:

  • en [1]: el servidor se ha iniciado. Lo detendremos con la aplicación [stopNetworkServer] [7] que aparece arriba.

5.10.3. Controlador JDBC de Db Derby

El controlador JDBC de la base de datos Derby SGBD se encuentra en la carpeta [lib] de la carpeta de instalación:

  • en [1]: el archivo [derbyclient.jar] contiene el controlador JDBC de SGBD Db Derby
  • en [2]: colocamos este archivo, al igual que los anteriores (párrafo 5.4.7), en la carpeta <jdbc>

Para probar este controlador JDBC, utilizaremos Eclipse y el complemento SQL Explorer. Se invita al lector a seguir los pasos explicados en el párrafo 5.4.7. A continuación, presentamos algunas capturas de pantalla relevantes:

  • en [1]: [window / preferences / SQL Explorer / JDBC Drivers]
  • en [2]: el controlador JDBC de Apache Derby no aparece en la lista. Lo agregamos.
  • en [3]: se le asigna un nombre al nuevo controlador
  • en [4]: se especifica el formato de las URL que maneja el controlador JDBC
  • en [5]: se ha especificado el archivo .jar del controlador JDBC
  • en [5b]: el nombre de la clase Java del controlador JDBC
  • en [5c]: el controlador JDBC está configurado

Una vez hecho esto, nos conectamos al servidor Apache Derby. Antes de eso, lo iniciamos.

  • en [6]: se crea una nueva conexión
  • en [7]: se le asigna un nombre
  • en [8]: queremos conectarnos al servidor Apache Derby
  • en [9]: la URL de la base de datos a la que queremos conectarnos. Detrás del prefijo estándar [jdbc:derby://localhost:1527], se debe indicar la ruta de una carpeta en el disco que contenga una base de datos Derby. La opción [create=true] permite crear esa carpeta si aún no existe.
  • en [10,11]: nos conectamos como usuario [jpa/jpa]. No he investigado a fondo el tema, pero parece que se puede poner lo que se quiera como nombre de usuario y contraseña. Aquí se declara el propietario de la base de datos, si create=true.

Validamos la configuración de la conexión.

  • en [12]: nos conectamos
  • en [13]: nos identificamos (jpa/jpa)
  • en [14]: ya estamos conectados
  • en [15]: el esquema [jpa] aún no aparece.
  • en [16]: vamos a crear la tabla [ARTICLES] a partir del script [schema-articles.sql] creado en el párrafo 5.4.6.
  • En [17]: se selecciona el script
  • en [18]: el script que se ejecutará
  • en [19]: se ejecuta después de eliminar todos sus comentarios, ya que Apache Derby, al igual que HSQLB, no los acepta.
  • una vez ejecutado el script, se actualiza en [20] la visualización de la base de datos
  • en [21]: el esquema [jpa] y la tabla [ARTICLES] están ahí
  • en [22]: el contenido de la tabla [ARTICLES]
  • en [23]: el contenido de la carpeta [derby\jpa] en la que se creó la base de datos.

5.11. El marco de trabajo Spring 2 de

El marco Spring 2 está disponible en la URL [http://www.springframework.org/download]:

  • en [1]: se descarga la última versión
  • En [2]: se descarga la versión denominada «con dependencias», ya que contiene los archivos .jar de las herramientas de terceros que Spring integra y que se necesitan constantemente.
  • en [3]: descomprimimos el archivo descargado
  • en [4]: la carpeta de instalación de Spring 2.1
  • en [5]: en la carpeta <dist> se encuentran los archivos de Spring. El archivo [spring.jar] reúne todas las clases del marco de trabajo Spring. Estas también están disponibles por módulos en la carpeta <modules> en [6]. Si sabemos qué módulos necesitamos, podemos encontrarlos aquí. De esta manera, evitamos incluir en la aplicación archivos que no necesita.
  • en [7]: la carpeta <lib> contiene los archivos de las herramientas de terceros utilizadas por Spring
  • en [8]: algunos archivos del proyecto [jakarta-commons]

Cuando el tutorial utiliza archivos de Spring, hay que buscarlos en la carpeta <dist> o en la carpeta <lib> de la carpeta de instalación de Spring.

5.12. El contenedor EJB3 de JBoss

El contenedor EJB3 de JBoss está disponible en la URL [http://labs.jboss.com/jbossejb3/downloads/embeddableEJB3]:

  • en [1]: se descargan JBoss y EJB3. Se puede observar la fecha del producto (septiembre de 2006), mientras que la descarga se realiza en mayo de 2007. Cabe preguntarse si este producto sigue en desarrollo.
  • en [2]: el archivo descargado
  • en [3]: el archivo zip descomprimido
  • en [4]: los archivos [hibernate-all.jar, jboss-ejb3-all.jar, thirdparty-all.jar] forman el contenedor EJB3 de JBoss. Es necesario colocarlos en la ruta de clases de la aplicación que utiliza este contenedor.