domingo, 17 de febrero de 2013

Un proyecto en NetBeans de principio a fin (II). Configuración del entorno de desarrollo

No voy a extenderme demasiado en esta segunda parte. Voy a obviar algunos aspectos triviales como "encienda usted su ordenador" y "haga doble click en el icono de NetBeans"... (Vaya, al final no los he obviado). En una entrada anterior -Mis primeros pasos con NetBeans- Ya hablé algo sobre la plataforma y puse varios links de utilidad para descargar el software. Aunque este blog no es el Santo Grial de la Informática, presupondré cierto nivel de alfabetización digital a los eventuales lectores. Por ahora los tres o cuatro usuarios habituales están muy por encima de esos requerimientos mínimos, así que sigamos...


CONFIGURANDO EL ENTORNO DE DESARROLLO 

Lo primero de todo, debemos tener instalado el IDE de NetBeans (versión 6.8 o 6.9), y con Java claro. Otros requisitos son: la versión 6 del JDK, un servidor de aplicaciones GlassFish y un servidor de bases de datos MySQL (la versión 5.1)

Una vez que tengamos nuestro IDE en marcha, creamos un nuevo proyecto. Se nos abrirá un asistente. En la lista de categorías seleccionamos "Java Web". Después, en los proyectos, seleccionamos "Web Application".

En el siguiente paso, nombre y localización, damos nombre al proyecto (AffableBean) y designamos una ubicación para el mismo en nuestro equipo.

Continuamos, estamos en la pantalla del asistente para servidor y configuraciones. Tenemos que especificar GlassFish como el servidor donde se desplegará la aplicación durante el desarrollo (El servidor GlassFish v3 está incluido en el paquete de instalación de NetBeans). Seleccionamos la versión de Java: Java EE 6 Web.

El Checkbox "Enable Contexts and Dependency Injection" debe estar desactivado. Esta opción es específica para tecnologías CDI que no se usan en este tutorial.

Por defecto el path del contexto de la aplicación es el propio nombre del proyecto. Esta es la ruta donde la aplicación puede ser accedida después de ser desplegada en el servidor. GlassFish usa por defecto el puerto 8080, por lo que durante el desarrollo nuestro proyecto estará accesible en la url http://localhost:8080/AffableBean/.

Al pulsar en "Finalizar" el IDE generará el esqueleto de nuestro proyecto AffableBean, ajustado a las convenciones de J2EE para la estructura de aplicaciones web. Al ejecutar el nuevo proyecto podremos ver en el web browser un precioso "Hola Mundo" que nos dará a entender que, de momento, todo funciona (y que nos queda un arduo trabajo por delante antes de que esto se parezca a eBay...)

Hasta este punto han pasado un montón de cosas y casi ni nos hemos enterado. Cuando ejecutamos el proyecto web, el IDE invoca el Ant Target "run" en el build script del proyecto. Nuestro Build Script, no es más (ni menos) que un fichero XML (build.xml) que empaqueta una lista de pequeñas tareas (las Ant Targets) que se ejecutan cuando se despliega la aplicación. Cada uno de estos Ant Targets puede ser a su vez una referencia a otro XML, como es el caso de "run". Si hacemos doble click sobre "run", acabaremos en otro fichero, el build-impl.xml. En este último, aparecemos posicionados junto a la definición de dos nuevos targets: "run-deploy" y "run-display-browser". Estos, a su vez, dependen de otros targets... En fin, y así podríamos seguir hasta no querer volver a saber nada de todo esto... Pero lo esencial es que las siguientes acciones tienen lugar cuando se invoca el run target:
  1. Se compila el proyecto
  2. Se crea un fichero WAR
  3. Se inicializa el servidor (si no está ya corriendo)
  4. El fichero WAR se despliega en el servidor designado
  5. Se abre el navegador y se muestra la URL del servidor y el path contexto de la aplicación.
Si queremos crear un fichero WAR distribuible, podemos hacer un Clean and build. Esta opción está disponible en el menú contextual que se despliega al hacer click en el botón derecho sobre el nodo del proyecto. Esto genera el fichero WAR del proyecto en la carpeta "dist". La carpeta "build" contiene el proyecto compilado.

Si buscamos (en la pestaña de Servicios) el servidor GlassFish, y desplegamos el nodo de Aplicaciones, podremos ver nuestra AffableBean ejecutándose correctamente.

En este punto hemos creado un proyecto Java web en el IDE, hemos comprobado que se compila y despliega correctamente en el servidor, y somos capaces de mostrar algo en el navegador.

Comunicándonos con el servidor de bases de datos 

Una vez descargado e instalado el servidor MySQL hay que conectarlo con el IDE. Por defecto se usa el usuario root con una cadena vacía como contraseña. Sin embargo, debido a cuestiones de conectividad con el servidor GlassFish, es recomendable usar una cuenta con una contraseña no vacía.

Una vez que hemos comprobado que el servidor de MySQL está corriendo o lo hemos puesto en marcha nosotros (yo lo he hecho a través de los servicios del sistema, en las herramientas administrativas del panel de control de Windows), podemos registrar el servidor en el IDE.

En la ventana de Servicios podemos conectar con el servidor, iniciarlo y pararlo, ver instancias de la base de datos y los datos que contiene, e incluso ejecutar herramientas externas de administración en el servidor. Pulsando sobre el nodo de las bases de datos podemos registrar el servidor MySQL. En la ventana de propiedades del servidor aceptaremos las configuraciones por defecto. Podemos activar también la opción de salvar password. De esta forma el IDE se conectará con el servidor MySQL de bases de datos. Ahora podremos ver las instancias de bases de datos mantenidas en el servidor, y desplegando el nodo de Drivers podremos comprobar que el IDE contiene el driver Connector/JDBC para MySQL.

El servidor de aplicaciones (GlassFish) necesita de este driver para habilitar la comunicación entre nuestro código Java y la base de datos de MySQL. Puesto que el controlador ya viene con el IDE, no es necesario descargarlo. No obstante, se puede habilitar el despliegue del driver JDBC en la configuración del servidor, de forma que este sea incorporado automáticamente en caso de su pérdida en el servidor.

Opcionalmente se puede configurar el IDE para iniciar y apagar el servidor MySQL, o también ejecutar una herramienta de administración externa. Pulsando sobre el nodo del servidor con el botón derecho del ratón, podemos acceder a las Propiedades, y una vez ahí, a la pestaña de Administración.

Crear una instancia de base de datos 

En este punto crearemos la instancia de base de datos con la que vamos a trabajar en este tutorial. Para ello debemos abrir el menú contextual (botón derecho del ratón) sobre el nodo del servidor MySQL y seleccionar "Create Database". A continuación escribimos "affablebean" como nombre para la base de datos, y habilitamos el acceso completo para el usuario root@localhost. Más adelante, cuando creemos el pool de conexiones en el servidor necesitaremos proporcionar los datos del usuario root para acceder a la base de datos.

Cuando finalicemos pulsando "OK", habremos creado la base de datos "affablebean" y la conexión estará establecida, lo que podremos comprobar en la ventana de Servicios. Si expandimos el nodo de la conexión podremos ver el esquema por defecto de la base de datos, con nodos para tablas, vistas y procedimientos (todavía vacíos).

Los nodos de conexiones son persistentes en la ventana de Servicios, pero si reiniciamos el IDE la conexión aparecerá rota. En el menú contextual podemos reconectar, cerciorándonos eso sí, de que el servidor de bases de datos está funcionando.

Llegados a este punto ya tenemos conectado nuestro servidor de MySQL con el IDE y hemos creado nuestra base de datos affablebean. Podemos pues continuar con el siguiente capítulo: "Un proyecto en NetBean de principio a fin. Parte III"; en el que veremos cómo preparar el modelo de datos para la aplicación.

No hay comentarios:

Publicar un comentario