Skip to content

5. Anexos

A continuación describimos la instalación y el uso básico de las herramientas utilizadas en el documento «Persistencia en Java 5: guía práctica». La información que se ofrece a continuación es la disponible en mayo de 2007. Quedará obsoleta en breve. Cuando esto ocurra, se invitará al lector a seguir pasos similares, aunque no idénticos. Las instalaciones se han realizado en un equipo 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 desde el 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 desde 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], 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, creando un acceso directo que ejecute Eclipse con estos mismos argumentos. Veamos en qué consisten:

  1. -vmargs: indica que los argumentos que le siguen están destinados a la máquina virtual 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 Java (JVM) que ejecuta Eclipse. Por defecto, este tamaño es de 256 MB, tal y como se muestra aquí. Si el equipo 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 del sistema que define la carpeta raíz de un JDK.
  • a 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 futuras instalaciones 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, iniciamos Eclipse mediante este acceso directo. Aparece 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. Es lo que haremos sistemáticamente. Por lo tanto, la respuesta que se dé a este cuadro de diálogo no es importante.

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

Image

Cerramos la vista [Welcome] tal y como se ha sugerido anteriormente:

Image

Antes de crear un proyecto Java, vamos a configurar 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 ha utilizado para iniciar el propio Eclipse debe aparecer en la lista de JRE. Normalmente, este será el único. Es posible añadir JRE mediante el botón [Add]. Para ello, hay que indicar la ruta raíz del JRE. Por su parte, el botón [Search] iniciará una búsqueda de JREs en el disco. Es una buena forma de saber en qué punto nos encontramos con los JREs que instalamos y luego nos olvidamos de 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 Java. Es el que se instaló en el apartado 5.1 y que también se utilizó para iniciar Eclipse. Al hacer doble clic sobre él, se accede a sus propiedades:

Image

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

Selecciona [Java Project] y, a continuación, [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 el nombre del proyecto coincida con el de la 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

En la imagen anterior, creamos una carpeta especial dentro del proyecto para almacenar 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]. De este modo, obtenemos un esqueleto de proyecto Java:

Image

Hacemos clic con el botón derecho del ratón sobre 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]. A continuación, el proyecto se amplía 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] debería aparecer por defecto. Si no fuera así, se puede solicitar su visualización mediante [Window/Show View/Console]:

Image

5.2.2. Elecció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 crear aplicaciones Java de consola, pero no aplicaciones Java de tipo web o Swing; de lo contrario, hay que hacerlo todo uno mismo. 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 hay que explorar para encontrar los complementos
  • En [4], se marcan los complementos deseados
  • En [5], Eclipse indica que se ha seleccionado 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 las condiciones de las licencias de estos distintos complementos
  • En [8], aparece la lista de todos los complementos que se van a instalar
  • en [9], se inicia la descarga de estos complementos
  • en [10], una vez descargados, se instalan todos sin comprobar su firma
  • en [11], al finalizar la instalación de los complementos, se deja que Eclipse se reinicie
  • en [12], si se ejecuta [File/New/Project], se comprueba que ahora se pueden crear aplicaciones web, lo que inicialmente no era posible.

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 hacen que aquí la prefiramos a JUnit. Procedemos como anteriormente: [Help/Software Udates/Find and Install]:

  • En [2], se indica que se quieren instalar nuevos complementos
  • En [3a], no aparece el sitio de descarga de [TestNG]. Lo añadimos con [3b]
  • en [4b]: la página del plugin es [http://beust.com/eclipse]. En [4a], se introduce lo que se desee.
  • En [5a], se selecciona el plugin [TestNG] para la actualización. En [5b], se inicia la actualización.
  • En [6], se ha establecido la conexión con la página web del complemento. Se nos muestran todos los complementos disponibles en la página web. En este caso, solo hay uno, que seleccionamos antes de pasar al siguiente paso.
  • En [7], aceptamos las condiciones de las licencias del complemento
  • en [8], aparece la lista de todos los complementos que se van a instalar; aquí hay uno. Iniciamos la descarga. A continuación, todo transcurre tal y como se ha descrito 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 a la hora de desarrollar 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 la página 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

Reiniciamos Eclipse:

  • En [1]: se abre 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 este modo, 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 anterior.

5.2.6. Instalación del complemento [SQL Explorer]

Ahora vamos a instalar 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 la página web [http://eclipse-plugins.2y.net/eclipse/plugins.jsp]:

  • en [1]: el sitio web de los complementos de Eclipse
  • en [2]: selecciona la categoría [Database]
  • en [3]: en la categoría [Database], elegir la visualización por clasificación (poco fiable, dado el escaso número de personas que votan)
  • en [4]: QuantumDB ocupa la primera posición
  • en [5]: elegimos SQLExplorer, más antiguo, peor valorado (3.º) pero muy bueno de todos modos. Vamos a la página web del plugin [plugin-homepage]
  • en [6] y [7]: procedemos a descargar el plugin.
  • en [8]: descomprimimos el archivo zip del complemento en la carpeta de Eclipse.

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

  • en [1]: abre una nueva perspectiva
  • en [2]: se ve que hay una perspectiva [SQL Explorer] disponible. Volveremos sobre 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 instalada una versión anterior de Tomcat, es preferible desinstalarla antes.

Image

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

Image

Se puede descargar el archivo .exe destinado a la plataforma Windows. Una vez descargado, se inicia la instalación de Tomcat haciendo doble clic sobre él:

Image

Acepta las condiciones 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 introducido [admin / admin] ->

Tomcat 5.x necesita un JRE 1.5. Normalmente debería encontrar el que está instalado en tu equipo. Arriba, la ruta indicada es la del JRE 1.6 descargado en el apartado 5.1. Si no se encuentra ningún JRE, especifica su directorio raíz utilizando el botón [1]. Una vez hecho esto, utiliza 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 icono situado a la derecha en la barra de tareas de Windows:

Image

Al hacer clic con el botón derecho del ratón sobre este icono, se accede a los comandos de inicio y parada del servidor:

Image

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

Image

Obsérvese el cambio de estado del icono. Este se puede eliminar de la barra de tareas:

Image

La instalación de Tomcat se ha realizado 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 parada/inicio de Tomcat:

Image

A continuación, vemos el icono que se ha mostrado anteriormente:

Image

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

Image

Los botones [Start - Stop - Pause] - Restart nos permiten iniciar, detener y reiniciar el servidor. Iniciamos el servidor mediante [Start] y, a continuación, desde un navegador, accedemos a la URL http://localhost:8080. Deberíamos obtener una página similar a la siguiente:

Image

Podemos seguir los enlaces que aparecen a continuación para comprobar que Tomcat se ha 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 ocasión de volver sobre los enlaces que permiten gestionar las aplicaciones web desplegadas en el servidor:

Image

5.3.2. Despliegue 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. Supongamos que <webapp> es 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 ha sido servida por un servidor web, sino que el navegador la ha cargado directamente. 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 desplegadas en el servidor Tomcat se realiza mediante los 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 desplegadas 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 denominado «admin». Volvamos al sitio web de Tomcat [http://tomcat.apache.org/download-55.cgi]:

Image

Descarguemos el archivo zip denominado [Administration Web Application] y descomprimámoslo. Su contenido es el siguiente:

Image

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

Image

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

Image

Detengamos y 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]. Aparece una página de inicio de sesión (para que se cargue, puede que haya que «actualizar» la página):

Aquí hay que volver a introducir los datos que proporcionamos durante la instalación de Tomcat. En nuestro caso, introducimos el nombre de usuario y la contraseña «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 (Environment Entries),
  • gestionar los usuarios y administradores de Tomcat (Users),
  • gestionar grupos de usuarios (Groups),
  • definir roles (= lo que un usuario puede o no puede hacer),
  • definir las características de las aplicaciones web desplegadas por el servidor (Service Catalina)

Sigamos el enlace [Roles] anterior:

Image

Un rol permite definir lo que un usuario o un grupo de usuarios puede o no puede hacer. A cada rol se le asignan determinados derechos. Cada usuario está asociado a uno o varios roles y dispone de los derechos de los mismos. El rol [manager] que se muestra a continuación otorga el derecho a gestionar las aplicaciones web desplegadas en Tomcat (despliegue, inicio, parada, descarga). Vamos a crear un usuario [manager] al que asociaremos el rol [manager] para que pueda gestionar las aplicaciones de Tomcat. Para ello, seguimos el enlace [Users] de la página de administración:

Image

Vemos que ya existen varios usuarios. Utilizamos 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 validar esta incorporación. El nuevo usuario aparece en la lista de usuarios:

Image

Este nuevo usuario se añadirá 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 añadir usuarios es modificar directamente este archivo. Este es el procedimiento que hay que seguir, sobre todo, si por casualidad se ha olvidado la contraseña del administrador «admin» o del «manager».

5.3.5. Gestión de las aplicaciones web implementadas

Volvamos ahora 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. Iniciamos sesión 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

Aparece una página con la lista de aplicaciones actualmente desplegadas en Tomcat:

Image

Podemos añadir 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 hemos creado 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 va bien, obtendremos la siguiente página de respuesta:

Image

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

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 cerrar la aplicación
Recharger
permite recargar la aplicación. Esto es necesario, por ejemplo, cuando se han añadido,
modificado o eliminado determinadas 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 hemos proporcionado 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, a continuación, 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 desplegada de este modo puede eliminarse de la lista de aplicaciones desplegadas, del mismo modo 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 desplegar 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, habríamos 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 denominada «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 los 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. Se trata de 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. En este caso solo tenemos una: [/exemple.html]. Así, cuando un cliente solicite la URL [/exemple], lo que se le proporcionará en realidad será 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, incluida la ejecución de las clases Java (servlets) ejecutadas por Tomcat.

Iniciemos Eclipse y, a continuación, veamos la vista [Servers]:

  • en [1]: Window/Show View/Other
  • en [2]: selecciona la vista [Servers] y haz [OK]
  • en [1], aparece una nueva vista [Servers]
  • en [2], hacemos clic con el botón derecho del ratón sobre la vista y solicitamos crear un nuevo servidor [New/Server]
  • en [3], se selecciona el servidor [Tomcat 5.5] y, a continuación, se crea [Next]
  • en [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 incorporación del servidor se materializa con la adició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 declarados; en este caso, únicamente el servidor Tomcat 5.5 que acabamos de registrar. Al hacer clic con el botón derecho del ratón sobre él, se accede a los comandos que permiten iniciar, detener y reiniciar el servidor:

Image

En el ejemplo anterior, iniciamos el servidor. Al iniciarse, se registran varios mensajes de log 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. Por el momento, no nos detendremos en ellos. Sin embargo, es importante comprobar que no indiquen errores al cargar los contextos. De hecho, al iniciarse, el servidor Tomcat/Eclipse intentará cargar el contexto de las aplicaciones que gestiona. 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 producirse varios tipos de errores:

  • el archivo [web.xml] tiene errores sintácticos. 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 han encontrado algunas de las clases que se deben cargar. Se buscan en [WEB-INF/classes] y [WEB-INF/lib]. Por lo general, hay que comprobar 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 apartado 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. Volvamos a la vista [Servers] y hagamos doble clic en el servidor Tomcat para acceder a sus propiedades:

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 independientes. 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

Observamos el funcionamiento descrito en el apartado 5.3.4.

En nuestros ejemplos anteriores hemos utilizado 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 icono:

Image

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

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 hemos realizado anteriormente, podemos introducir [admin / admin] o [manager / manager]. A continuación, se muestra la lista de aplicaciones desplegadas:

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 indica la versión deseada de Firebird
  • en [3]: se descarga el archivo binario de instalación

Una vez descargado el archivo [3], se hace doble clic en él para instalar Firebird SGBD. 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 gestionar 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 icono del SGBD permanece en la barra de tareas de Windows:

Para crear y gestionar bases de datos Firebird con el cliente de línea de comandos [isql.exe], es necesario consultar la documentación incluida con el producto, 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 siguiente apartado.

5.4.2. Trabajar con Firebird SGBD con IB- Expert

La página web principal de IB-Expert es [http://www.ibexpert.com/].

  • en [1], se selecciona IBExpert
  • En [2], se selecciona la descarga tras haber elegido, si se desea, el idioma que se prefiera
  • en [3], se selecciona la versión denominada «personal», ya que es gratuita. No obstante, es necesario registrarse en la página web.
  • 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

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

Image

Server
(Serveur)
puede ser [local] o [remote]. En este caso, nuestro servidor está en la misma máquina que [IBExpert]. Elegimos
, por tanto, [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 único archivo. Esa es una de sus ventajas.
La base de datos se transfiere de un equipo a otro simplemente copiando el archivo.
El sufijo [.fdb] se añade automáticamente.
Username
SYSDBA es el administrador por defecto 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 una vez que se haya creado esta

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

Image

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

Image

Charset
(Jeu de caractères)
Familia de caracteres que se debe utilizar. Se recomienda seleccionar en la lista desplegable la familia
[ISO-8859-1], que permite utilizar caracteres latinos acentuados.
Server version
(Version du serveur)
[IBExpert] es capaz de gestionar 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]. Esta ventana puede cerrarse accidentalmente. Para volver a obtenerla, 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 del ratón 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:

Empecemos por asignar el nombre [ARTICLES] a la tabla utilizando el campo de entrada [1]:

Image

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

Image

Para convertir un campo en clave primaria, hay que hacer doble clic en el campo [PK] (Primary Key) del campo. Añadamos campos con el botón situado encima de [3]:

Image

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

Image

Curiosamente, IBExpert muestra las consultas SQL que ha ejecutado. Esto permite familiarizarse tanto con el lenguaje SQL como con el dialecto SQL, que podría ser propio de la empresa. El botón [Commit] permite validar la transacción en curso, mientras que [Rollback] la cancela. Aquí la aceptamos mediante [Commit]. Una vez hecho esto, IBExpert añade la tabla creada al árbol de nuestra base de datos:

Image

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

Image

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

Image

Aquí encontramos la restricción de clave primaria que hemos creado. Podemos añadir 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 añadir 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 aparece 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

A continuación, 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 volver a 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 introducir datos en la tabla [ARTICLES]. Para ello, utilizaremos su panel [Data]:

Image

Los datos se introducen haciendo doble clic en los campos de entrada de cada fila de la tabla. Se añade una nueva línea con el botón [+] y se elimina una línea con el botón [-]. Estas operaciones se realizan en una transacción que se valida mediante 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 (Structured Query Language) permite al usuario:

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

IBExpert permite al usuario realizar las operaciones del 1 al 4 de forma gráfica. Acabamos de verlo. Cuando la base de datos contiene numerosas tablas, cada una con cientos de filas, se necesita información que resulta difícil de obtener visualmente. Supongamos, por ejemplo, que una tienda virtual en Internet 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» presenta defectos. Se desea ponerse en contacto con todas las personas que lo han comprado para que devuelvan el producto y se les ofrezca un cambio gratuito. ¿Cómo encontrar las direcciones de estos compradores?

  1. Se pueden consultar visualmente todas las tablas y buscar a esos compradores. Esto llevará unas horas.
  2. Se puede ejecutar una orden SQL que proporcionará 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 desea obtener esté repartida en varias tablas
  • ...

A continuación, presentamos el editor SQL de IBExpert. Se puede acceder a él a través de la opción [Tools/SQL Editor] o [F12]:

Image

De este modo, se accede a un editor de consultas avanzado, SQL, con el que se pueden realizar consultas. Escribamos una consulta:

Image

Ejecutamos la consulta SQL con el botón [Execute] situado 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 volver a la pestaña [Edit]. Allí se encuentra la orden SQL, que ya se ha ejecutado.

Image

Hay varios botones de la barra de herramientas que resultan ú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 introducir una nueva orden SQL:

Image

y ejecutarla:

Image

Volvamos a la pestaña [Edit]. Las diferentes órdenes SQL emitidas quedan almacenadas en [IBExpert]. El botón [Previous Query] permite volver a una orden SQL emitida anteriormente:

Image

De este modo, se vuelve a la consulta anterior:

Image

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

Image

A continuación, encontramos la orden SQL, que es la siguiente en la lista de órdenes SQL guardadas:

Image

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

Image

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

Image

El botón [Commit] permite validar 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 la última ejecución de [Commit]. Si no se ha ejecutado ningún [Commit] desde la última conexión a la base de datos, se desharán los cambios realizados desde dicha 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 tras el comando [New Query]:

Image

Se obtiene el siguiente resultado con [Execute]:

Image

Por lo tanto, la fila se ha insertado correctamente. Ahora examinemos el contenido de la tabla de otra forma. 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 de arriba permite actualizar la tabla. Tras la actualización, la tabla anterior no cambia. Da la impresión de que la nueva línea no se ha insertado. Volvamos al editor SQL (F12) y, a continuación, validemos la orden SQL emitida con el botón [Commit]:

Image

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

Image

A continuación, abramos la pestaña [Fields] y volvamos a la pestaña [Data]. Esta vez, la línea insertada aparece correctamente:

Image

Cuando comienza la ejecución de las distintas órdenes SQL, el editor abre lo que se denomina una transacción en la base de datos. Las modificaciones realizadas 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 mediante un [Commit Transaction]. La transacción actual finaliza entonces y comienza una nueva.

Las modificaciones realizadas durante una transacción pueden anularse mediante una operación denominada [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 líneas de la tabla [ARTICLES], y a continuación ejecutemos [New Query], la nueva orden SQL:

Image

Obtenemos el siguiente resultado:

Image

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

Image

y veamos la pestaña [Data]:

Image

Incluso si utilizamos el botón [Refresh] o pasamos a la pestaña [Fields] para volver después a la pestaña [Data], el contenido anterior no cambia. Esto ya se ha explicado. Nos encontramos en otra transacción que trabaja con su propia copia. Ahora volvamos al editor SQL (F12) y utilicemos 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 se han deshecho los cambios:

Image

Volvamos a ejecutar la consulta SQL anterior para comprobarlo. Vemos que las líneas que se habían eliminado vuelven a aparecer:

Image

La operación [Rollback] ha devuelto la copia en la que está trabajando el editor SQL al estado en el 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 ocurre en el tutorial «Persistencia en Java 5: práctica», resulta interesante poder exportar una base de datos desde un SGBD 1 a un script SQL para, a continuación, 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 desplazar hacia 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 cuyo contenido se desea extraer (en el paso anterior, lo que se exportaba era la estructura de la tabla)
  • en [7]: para desplazar hacia la derecha el objeto seleccionado a la izquierda
  • en [8]: el resultado obtenido
  • en [9]: la pestaña [Options] permite configurar determinados 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 dicho 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

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 multicapa 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 la que se descargó Firebird:

  • en [1]: se opta por 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]. Descomprimiremos este archivo. Se utilizará para todos los ejemplos de JPA con Firebird.

Lo colocamos en una carpeta a la que a partir de ahora llamaremos <jdbc>:

Image

Para comprobar este controlador JDBC, utilizaremos Eclipse y el complemento SQL Explorer (apartado 5.2.6). Comenzamos declarando 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]: ve 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 colocado previamente en la carpeta <jdbc>
  • en [8]: el nombre de la clase Java del controlador JDBC. Se puede obtener mediante el botón [8b].
  • Pulsamos [OK] para validar la configuración
  • en [9]: el controlador JDBC de Firebird ya está configurado. Ya podemos empezar a utilizarlo.
  • a [1]: abre una nueva perspectiva
  • en [2]: seleccionar la perspectiva [SQL Explorer]
  • en [3]: crear una nueva conexión
  • en [4]: asignarle un nombre
  • en [5]: seleccionar el controlador de Firebird JDBC en 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]
  • Se valida la configuración de la conexión mediante [OK]
  • en [1]: se hace doble clic en el nombre de la conexión que se desea 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 realizar consultas SQL en la ventana [SQL Editor]:

  • en [1]: selecciona una conexión abierta
  • en [2]: introducir la orden SQL que se va a ejecutar
  • en [3]: ejecutarla
  • en [4]: resumen de la orden ejecutada
  • en [5]: su resultado

5.5. El SGBD e a MySQL5

5.5.1. Instalación

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

  • en [1]: elige la versión que desees
  • 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 hay que extraer 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]: elegir una configuración estándar, la que plantee 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 asignar una nueva contraseña a «root». Si la instalación de MySQL5 se realiza tras la desinstalación de una versión anterior, esta operación puede fallar. Hay pocas 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 ha instalado como un servicio de Windows de inicio automático, c.a.d se inicia nada más arrancar Windows. Este modo de funcionamiento resulta poco 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á iniciado ([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
  • en [2]: el acceso directo para detenerlo

5.5.3. Clientes de administración de MySQL

En la página web de MySQL se pueden encontrar clientes de administración de SGBD:

  • en [1]: elige [MySQL GUI Tools], que reúne varios clientes gráficos que permiten tanto administrar el SGBD como utilizarlo
  • en [2]: elegir la versión de Windows adecuada
  • en [3]: se obtiene un archivo .msi que hay que ejecutar
  • en [4]: una vez realizada 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]: introduce la contraseña del usuario root (en este caso, «root»)
  • 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 vamos a crear. Primero, el usuario:

  • en [1]: seleccionamos [User Administration]
  • en [2]: hacemos clic con el botón derecho en la parte de [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 con el botón derecho del ratón 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 con el botón derecho se podrían crear. Dejamos que el lector lo haga.

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

  • en [1] y, a continuación, en [2]: seleccionamos el usuario [jpa]
  • en [3]: se selecciona la pestaña [Schema Privileges]
  • en [4]: se selecciona el esquema [jpa]
  • en [5]: vamos a otorgar al usuario [jpa] todos los privilegios sobre el esquema [jpa]
  • a [6]: se validan los cambios realizados

Para comprobar que el usuario [jpa] puede trabajar con el esquema [jpa], cerramos la sesión del administrador MySQL. Lo reiniciamos y, esta vez, iniciamos sesión con el nombre [jpa/jpa]:

  • en [1]: nos identificamos (jpa/jpa)
  • en [2]: la conexión se ha realizado correctamente 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 apartado 5.4.6.

  • a [1]: utilice la aplicación [MySQL Query Browser]
  • en [2], [3], [4]: iniciar sesión (jpa / jpa / jpa)
  • en [5]: abrir un script SQL para ejecutarlo
  • en [6]: se refiere al script [schema-articles.sql] creado en el apartado 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 adecuado
  • en [2]: elige la versión para 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 (apartado 5.4.7) en la carpeta <jdbc>:

Para probar este controlador JDBC, utilizaremos Eclipse y el complemento SQL Explorer. Se recomienda al lector que siga los pasos explicados en el apartado 5.4.7. A continuación, mostramos algunas capturas de pantalla significativas:

  • 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]: base de datos conectada

5.6. El SGBD e a 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]: elegir 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 por defecto 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 nada más arrancar Windows. Este modo de funcionamiento resulta poco 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 [PostgreSQL], que está en marcha ([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 SGBD y PostgreSQL. Iniciemos SGBD y, a continuación, [pgAdmin III] a través del menú anterior:

  • en [1]: haz doble clic en el servidor PostgreSQL para conectarte a él
  • en [2,3]: iniciar sesión como administrador de SGBD, en este caso (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 de 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 vamos a crear. 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 va a crear ahora una nueva base de datos:
  • n [1]: se añade una nueva base de datos
  • 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 un simple clic sobre ella, nos conectamos a ella y podemos ver su estructura:
  • en [5]: aparecen los objetos del esquema [jpa], en particular las tablas. Todavía no hay ninguna. Con un clic con el botón 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 apartado 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 apartado 5.4.6.
  • en [4]: el script se ha 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 (apartado 5.4.7), en la carpeta <jdbc>:

Para probar este controlador JDBC, utilizaremos Eclipse y el complemento SQL Explorer. Se recomienda al lector que siga los pasos explicados en el apartado 5.4.7. A continuación se muestran algunas capturas de pantalla significativas:

  • 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]: la página de descargas de Oracle 10g Express
  • en [2]: elige una versión para Windows. Una vez descargado el archivo, ejecútalo:
  • en [1]: hacer 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 marcha ([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 que lo inicia si aún no está en marcha)

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

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

  • en [1]: iniciar sesión como administrador de SGBD, en este caso (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 ha instalado con un cliente SQL que funciona en modo de línea de comandos. Se puede trabajar con mayor comodidad con el e SQL Developer, también proporcionado por Oracle. Se puede encontrar en la página web:

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

  • en [1]: la página de descargas
  • en [2]: elegir una versión para Windows sin JRE si ya está 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 el equipo
  • en [5b]: crear una nueva conexión
  • en [6]: SQL Developer permite conectarse a diversos SGBD. Selecciona Oracle.
  • en [7]: nombre asignado 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 por defecto
  • 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, vamos a crear la tabla [ARTICLES] a partir del script creado en el apartado 5.4.6.
  • en [15]: se abre un script SQL
  • en [16]: se designa el script SQL creado en el apartado 5.4.6.
  • en [17]: el script que se va a ejecutar
  • en [18]: el resultado de la ejecución: se ha creado la tabla [ARTICLES]. Haz doble clic sobre 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 (apartado 5.4.7), en la carpeta <jdbc> [2]:

Para probar este controlador JDBC, utilizaremos Eclipse y el complemento SQL Explorer. Se recomienda al lector que siga los pasos explicados en el apartado 5.4.7. A continuación, mostramos algunas capturas de pantalla significativas:

  • en [1]: se ha designado el archivo del controlador JDBC de OracleXE
  • en [2]: el controlador JDBC de OracleXE 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.8. El SGBD e al 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]: a continuación, instalar y descargar SQL Server Express 2005
  • en [3]: a continuación, 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 y 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 ha instalado 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 [SQL Server], que está en marcha ([3]) y que su inicio es automático ([4]).
  • en [5]: otro servicio relacionado con SQL Server, denominado «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 procederá de la misma manera 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, a continuación, acceda a las propiedades del protocolo.
  • en [2]: en la pestaña [IP Addresses], opción [IPAll]:
    • el campo [TCP Dynamic ports] se deja vacío
    • 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 sobre el servicio [SQL Server] se accede a las opciones de inicio y parada del servidor. Aquí lo iniciamos.
  • En [4]: se ha iniciado el servidor SQL

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

Iniciemos el SGBD tal y como se ha indicado anteriormente y, a continuación, la aplicación de administración [1] a través del menú que aparece 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: bien con un inicio de sesión de Windows (un usuario de Windows), bien con un inicio de sesión de SQL Server (cuenta definida en SQL Server, independiente de cualquier cuenta de Windows).
  • en [3b]: se crea un usuario del servidor SQL
  • en [4]: opción [General]
  • en [5]: el nombre de usuario
  • en [6]: la contraseña (jpa aquí)
  • 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]: volvemos a conectarnos
  • 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 apartado 5.4.6.

  • en [1]: se abre un script SQL
  • en [2]: se selecciona el script SQL creado en el apartado 5.4.6, página 240.
  • en [3]: hay que volver a identificarse (jpa/jpa)
  • en [4]: el script que se va a 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 sobre él. Se lleva a cabo una descompresión y se crea una carpeta en la que encontramos el controlador Jdbc [3]
  • con el nombre [4]: colocamos el archivo Jdbc [sqljdbc.jar], al igual que los anteriores (apartado 5.4.7), en la carpeta <jdbc>

Para probar este controlador JDBC, utilizaremos Eclipse y el complemento SQL Explorer. Se recomienda al lector que siga los pasos explicados en el apartado 5.4.7. A continuación, mostramos algunas capturas de pantalla significativas:

  • 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 gestiona bases de datos en memoria, en lugar de 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 este modo en memoria pueden recuperarse cuando se apaga y se reinicia el servidor. De hecho, las órdenes SQL emitidas para crear las bases se almacenan en un archivo de registro para volver a ejecutarlas en el siguiente arranque del servidor. De este modo, se consigue la persistencia de las bases a lo largo del tiempo.

El método tiene sus limitaciones y HSQLDB no es un SGBD destinado a fines comerciales. Su principal interés 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 Java de 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 gestionadas por SGBD y HSQLDB. El servidor se iniciará, se detendrá y se gestionará mediante tareas Java.

  • en [1]: la página 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 que permite iniciar el servidor [hsql] y [6], y en [7], el que permite iniciar una herramienta básica de administración del servidor.

5.9.2. Iniciar/Detener HSQLDB

Para iniciar el servidor HSQLDB, hay que hacer doble clic en la aplicación [runManager.bat] [6] que aparece arriba:

  • en [1]: se puede ver que, para detener el servidor, basta con pulsar Ctrl+C en la ventana.

5.9.3. La base de datos [test]

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

  • en [1]: al iniciarse, el SGBD HSQL ejecuta el script denominado [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: se otorgan derechos de administración al usuario [sa]

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 HSQL
  • en [2]: colocamos este archivo, al igual que los anteriores (apartado 5.4.7), en la carpeta <jdbc>

Para comprobar este controlador JDBC, utilizaremos Eclipse y el complemento SQL Explorer. Se recomienda al lector que siga los pasos explicados en el apartado 5.4.7. A continuación, mostramos algunas capturas de pantalla significativas:

  • 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 está configurado

Una vez hecho esto, nos conectamos al servidor HSQL. Antes hay que iniciarlo.

  • 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 hemos visto que es 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]: se va a crear la tabla [ARTICLES] a partir del script [schema-articles.sql] creado en el apartado 5.4.6.
  • en [17]: se selecciona el script
  • en [18]: el script que se va a ejecutar
  • en [19]: se ejecuta tras eliminar todos los comentarios, ya que HSQLB no los admite.
  • una vez ejecutado el script, se actualiza en [20] la visualización de la base de datos
  • en [21]: la tabla [ARTICLES] aparece correctamente
  • en [22]: su contenido

Detengamos y reiniciemos el servidor HSQLDB. Una vez hecho esto, examinemos 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, asimismo, ocupa muy poca memoria. Presenta ventajas similares a las del HSQLDB. También puede integrarse en aplicaciones Java, c.a.d, formar parte integrante de la aplicación y funcionar en la misma JVM.

  • en [1]: la página de descargas
  • en [2,3]: descargar 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] [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] que aparece arriba:

  • en [1]: el servidor se ha iniciado. Se detendrá 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 (apartado 5.4.7), en la carpeta <jdbc>

Para probar este controlador JDBC, utilizaremos Eclipse y el complemento SQL Explorer. Se recomienda al lector que siga los pasos explicados en el apartado 5.4.7. A continuación, mostramos algunas capturas de pantalla significativas:

  • en [1]: [window / preferences / SQL Explorer / JDBC Drivers]
  • en [2]: el controlador JDBC de Apache Derby no aparece en la lista. Lo añadimos.
  • en [3]: se asigna un nombre al nuevo controlador
  • en [4]: se especifica el formato de las URL gestionadas por 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 hay que iniciarlo.

  • 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. Tras el prefijo estándar [jdbc:derby://localhost:1527], se indicará la ruta de una carpeta del disco que contenga una base de datos Derby. La opción [create=true] permite crear esta carpeta si aún no existe.
  • en [10,11]: se establece la conexión como usuario [jpa/jpa]. No he profundizado en el tema, pero parece que se puede introducir lo que se quiera como nombre de usuario y contraseña. Aquí se indica el propietario de la base de datos, si create=true.

Validamos la configuración de la conexión.

  • en [12]: iniciamos sesión
  • en [13]: se inicia sesión (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 apartado 5.4.6.
  • En [17]: se selecciona el script
  • en [18]: el script que se va a ejecutar
  • en [19]: se ejecuta tras eliminar todos los 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 ha creado la base de datos.

5.11. El marco de trabajo Spring 2 de

El framework 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 framework 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 este modo, 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 utilice 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. Cabe destacar 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. Hay que colocarlos en la ruta de clases de la aplicación que utilice este contenedor.