Sistema informático para la unidad de hardware y software (página 3)
• DOM Serializer: Responsable de la serialización del DOM de la página inicial.
• DOM Updater: Se encarga de conjuntar las de las 'DOM mutations' en una única actualización DOM.
• Component Suite: Ofrece un conjunto de componentes 'rich JSF' con influencia AJAX y características del puente, proporcionando los elementos básicos para aplicaciones ICEfaces.
• Client-side AJAX Bridge: Responsable de la actualización DOM en curso generada por la solicitud y la respuesta del proceso. También es el encargado de centrar la gestión y de presentar el proceso.
Jhard cumple los requisitos para poder utilizar ICEfaces.
JHard | |
IDE | Netbeans 6.5.1 |
Servidor de aplicaciones | Apache Tomcat 6.0.18 |
Framework Java EE | Java Server Faces 1.2 |
Gestor de base de datos | MySQL 5.1 |
Framework Ajax | ICEfaces 1.8.0 |
Tabla 4.3: Tabla resumen de tecnologías de JHard
Ajax-Push
JHard con ICEfaces 1.8.0 utiliza la tecnología Ajax-Push.
Ajax Push se refiere a un patrón de diseño de Ajax que utiliza conexiones duraderas del HTTP para permitir que la comunicación se mantenga en un estado de baja latencia entre un web server y un cliente. Es una capacidad revolucionaria en el marco de ICEfaces que permite el empuje asincrónico, en Internet de los cambios de la presentación al navegador del cliente basado en acontecimientos del lado del servidor. Básicamente es una manera de enviar datos del cliente al servidor y un mecanismo para "empujar" datos del servidor de nuevo al navegador del cliente. Esta comunicación del servidor-cliente toma una de dos formas posibles:
Este mecanismo se define en figura 4.11:
Figura 4.11: Arquitectura de Ajax Push de ICEfaces
De acuerdo con este mecanismo básico ICEfaces ofrece las características siguientes.
* Conexión Heartbeating (Latidos de corazón) y supervisión: Para mantener conexiones potencialmente duraderas, ICEfaces incluye un mecanismo configurable de latidos de corazón (Heartbeating) que supervise activamente la salud y las condiciones de la conexión, y proporciona alarmas cuando se detectan los problemas de conexión.
* Distribución de la conexión del navegador: Superando el límite de conexiones de navegadores asociados a la aplicación, ICEfaces facilita la distribución de la conexión del empuje entre las vistas múltiples de un mismo navegador, cosa de la cual se aprovecha muy bien JHard. Esto significa que las viñetas o las ventanas múltiples de una misma aplicación trabajarán de la misma manera.
* Renderización optimizada: ICEfaces utiliza el ciclo de vida de JSF para forzar la representación de los clientes que requieren una actualización.
El modelo de programación
Mientras que el mecanismo subyacente para el Ajax Push es intrincado, el modelo de programación proporcionado en ICEfaces es simple. Los elementos claves del mecanismo de Ajax Push de ICEfaces se describen así:
* Render Manager: Es un managed bean de aplicación encargado de la representación que despacha peticiones. Maneja el ciclo vital de JSF. El Render Manager maneja además el registro y la población de los Render Groups.
* Render Groups: Es un objeto que se registra con el Render Manager, y se utiliza para organizar los Render Groups (clientes) que recibirán las mismas actualizaciones de Ajax Push.
* Renderizable: Cualquier bean de petición o de sesión que ejecuta el interfaz de ICEfaces Renderizable, puede ser agregado a un Render Group, y participa en los eventos de Ajax Push.
Ajax Push describe la puesta en práctica de cualquiera de estos modelos, incluyendo una combinación de ambos. El patrón del diseño también se conoce como Ajax Reverse, Ajax Full-Duplex y Ajax Streaming.
Cualquier aplicación web donde los usuarios están observando que los datos se refrescan dinámicamente, es porque Ajax Push se encarga de traer esos datos vivos con las actualizaciones instantáneamente. JHard se beneficia de dicha capacidad.
Controles ICEfaces que se utilizan en JHard |
Controles Personales |
|
|
|
|
|
|
|
|
|
Paneles de Diseño |
|
|
|
|
|
Tabla 4.4: Controles ICEfaces que implementa JHard
CAPÍTULO V:
Plan de Implementación del Software
Objetivos del plan de implementación
Objetivo General
Entregar una propuesta de implementación sumamente sencilla y totalmente adaptable a las condiciones reales de la Unidad de Hardware y Software del Departamento de Ingeniería de la UES-FMO.
Objetivos Específicos
Obtener datos precisos del costo de implementación para que cualquier administración ajena a la Unidad de Hardware y Software pueda tener conocimientos del costo de JHard funcionando.
Crear una lista de procesos que sirvan como instrucciones para que cualquier persona encargada de la Unidad haga que el sistema JHard sea instalado exitosamente sin problemas.
Solucionar todos los errores que pueda acarrear el desarrollo de JHard al ambiente de producción y que no se puedan percibir en el ambiente de desarrollo.
Listado de actividades del plan de implementación
Las actividades para la implementación de JHard son las siguientes:
Actividades de la implementación de JHard |
|
|
|
Tabla 5.1: Actividades para implementación de JHard
Costo de Implementación
Rubro | Costo | ||||||||||||||
Hardware | 1 | Servidor de Aplicaciones DELL PowerEdge 840 | $899.00 | ||||||||||||
1 | UPS MINUTE MAN Pro 320 | $43.50 | |||||||||||||
Software | 1 | Apache Tomcat 6.0.18 | $0.00 | ||||||||||||
1 | Java Development Kit 1.6 | $0.00 | |||||||||||||
1 | ICEfaces | $0.00 | |||||||||||||
1 | MySQL Server 5.1 | $0.00 | |||||||||||||
1 | MySQL Administrator | $0.00 | |||||||||||||
1 | iReports 3.5 | $0.00 | |||||||||||||
Recurso Humano | 3 | Ingenieros de Sistemas Informáticos ($300.00 c/u) | $900.00 | ||||||||||||
Total | $1,842.5 |
Tabla 5.2: Costo de implementación de JHard
Pruebas Unitarias.
La metodología del ciclo de corrección y pruebas en el sistema, se implemento con Unit Testing, precisamente con la librería de java: JUnit Testing.
Una prueba unitaria es una forma de probar el correcto funcionamiento de una pieza de código. Esto sirve para asegurar que esa pieza de codigo (ese metodo) funcione correctamente.
La idea es escribir casos de prueba, que en su salida, producen una respuesta esperada. Cada caso de prueba es independiente.
Características
Para que una prueba unitaria sea válida se deben cumplir los siguientes requisitos:
Automatizable: no se requiere una intervención manual. Esto es especialmente útil para integración continua.
Completas: deben cubrir la mayor cantidad de código.
Repetibles o Reutilizables: no se deben crear pruebas que sólo puedan ser ejecutadas una sola vez. También es útil para integración continua.
Independientes: la ejecución de una prueba no debe afectar a la ejecución de otra.
Profesionales: las pruebas deben ser consideradas igual que el código, con la misma profesionalidad, documentación, etc.
Aunque estos requisitos no tienen que ser cumplidos al pie de la letra, se recomienda seguirlos o de lo contrario las pruebas pierden parte de su función.
Ventajas
El objetivo de las pruebas unitarias es aislar cada parte del programa y mostrar que las partes individuales son correctas. Proporcionan un contrato escrito que el trozo de código debe satisfacer. Estas pruebas aisladas proporcionan cinco ventajas básicas:
Fomentan el cambio: Las pruebas unitarias facilitan que el programador cambie el código para mejorar su estructura (práctica conocida como refactorización), puesto que permiten hacer pruebas sobre los cambios y así asegurarse de que los nuevos cambios no han introducido errores.
Simplifica la integración: Puesto que permiten llegar a la fase de integración con un grado alto de seguridad de que el código está funcionando correctamente. De esta manera se facilitan las pruebas de integración.
Documenta el código: Las propias pruebas son documentación del código puesto que ahí se puede ver cómo utilizarlo.
Los errores están más acotados y son más fáciles de localizar: dado que tenemos pruebas unitarias que pueden desenmascararlos.
JUnit es un conjunto de clases (framework) que permite realizar la ejecución de clases Java de manera controlada, para poder evaluar si el funcionamiento de cada uno de los métodos de la clase se comporta como se espera. Es decir, en función de algún valor de entrada se evalúa el valor de retorno esperado; si la clase cumple con la especificación, entonces JUnit devolverá que el método de la clase pasó exitosamente la prueba; en caso de que el valor esperado sea diferente al que regresó el método durante la ejecución, JUnit devolverá un fallo en el método correspondiente.
JUnit es también un medio de controlar las pruebas de regresión, necesarias cuando una parte del código ha sido modificado y se desea ver que el nuevo código cumple con los requerimientos anteriores y que no se ha alterado su funcionalidad después de la nueva modificación.
JHard implementa JUnit completamente. Todos se encuentran en el paquete de tests del proyecto, que es un espejo del sistema de paquetes del código fuente.
Algunas pruebas unitarias de JHard son las siguientes:
public class BeanBaseJWikiTest {
public BeanBaseJWikiTest() {
}
/**
* Obtenemos una entrada de la BD
*/
@Test
public void testGetEntrada() {
System.out.println("getEntrada");
BeanBaseJWiki instance = new BeanBaseJWiki();
Entrada result = instance.getEntrada(1);
assertNotNull(result);
System.out.println("Exito en la prueba!");
}
/**
* Obtejemos N entradas de la BD
*/
@Test
public void testNEntradas() {
int n = 2;
BeanBaseJWiki instance = new BeanBaseJWiki();
List resultado = instance.getUltimasNEntradas(n);
if(resultado.size()==n)
assertNotNull(resultado.get(0)); //por lo menos, que la primera NO sea null
else
fail("resultado menor que el esperado ("+n+")");
}
@Test
public void testgetAllEntradas() {
BeanBaseJWiki instance = new BeanBaseJWiki();
List resultado = instance.getAllEntradas();
assertNotNull(resultado);
}
/**
* Obtenemos los comentarios asociados a una entrada
*/
@Test
public void testComentariosDeEntrada() {
int identrada = 1;
BeanBaseJWiki instance = new BeanBaseJWiki();
Entrada resultado = instance.getEntrada(identrada);
Collection comentarios = resultado.getComentariosCollection();
System.out.println("Comentarios asociados con la Entrada: " + resultado.getTitulo());
for (Comentarios c : comentarios) {
System.out.println(c.getComentario());
}
assertTrue(comentarios.size()>0);
}
/**
* Obtiene las etiquetas asociadas a una entrada
*/
@Test
public void testEtiquetasDeEntrada() {
int identrada = 1;
BeanBaseJWiki instance = new BeanBaseJWiki();
Entrada entrada = instance.getEntrada(identrada);
Collection resultado= instance.getEtiquetas(entrada);
System.out.println("Tags asociados con la Entrada: " + entrada.getTitulo());
for (Tag t : resultado) {
System.out.println(t.getDescripcion());
}
assertNotNull(resultado);
}
/**
* Busqueda por titulo de entrada
*/
@Test
public void testSearchEntradaPorTitulo() {
String criteria = "ulo 4";
BeanBaseJWiki instance = new BeanBaseJWiki();
List e = (List)instance.searchEntradaPorTitulo(criteria);
assertNotNull(e);
}
/**
* Agregamos una Entrada a la BD
*/
@Test
public void testRegistrarEntrada() {
BeanBaseJHardmin hardmin = new BeanBaseJHardmin();
Usuario usuario = hardmin.getUsuario(1);
Entrada entrada = new Entrada(9999, "La entrada 9999", "nain, nine, nueve, 9, iiiiiiii, etc etc etc", new Date(2009, 9, 9), usuario);
BeanBaseJWiki instance = new BeanBaseJWiki();
if(!instance.createEntrada(entrada)) fail("fallo en REGISTRAR ENTRADA");
}
/**
* Agregamos un comentario a la BD
*/
@Test
public void testRegistrarComentario() {
Comentarios comentario = new Comentarios(9999, "Oh!!! este es el comentario para la entrada 9999!!!", new Date(2009, 9, 9), "TEST", true);
BeanBaseJWiki instance = new BeanBaseJWiki();
if(!instance.createComentario(9999, comentario)) fail("fallo en REGISTRAR COMENTARIO");
}
/**
* @author Hugol
*/
public class BeanBaseJRequestTest {
@Test
public void testGetSolicitudByPrioridad() {
System.out.println("getSolicitudByPrioridad");
String prioridad = "Alta";
BeanBaseJRequest instance = new BeanBaseJRequest();
Solicitud result = instance.getSolicitudByPrioridad(prioridad);
assertNotNull(result);
System.out.println("EXISTE LA PRIORIDAD ALTA!!");
}
@Test
public void testGetSolicitudesByPrioridad() {
System.out.println("getSolicitudesByPrioridad");
BeanBaseJRequest instance = new BeanBaseJRequest();
String prioridad="Media";
Solicitud[] result = instance.getSolicitudesByPrioridad(prioridad);
assertNotNull(result);
System.out.println(result);
System.out.println("OBTENGO TODAS LAS SOLICITUDES DE UNA PRIORIDAD ");
}}
CAPITULO VI:
Documentación del Software
Descripción de pantallas y Manual de Programador
Las principales pantallas de JHard son las siguientes:
Página Principal
Descripción:
En la parte principal de la página presenta un dashboard [25]para obtener información detallada y consolidada más importante de cada módulo.
Muestra los últimos artículos de la Wiki
Las existencias y equipos de la Facultad con estado fallido
Los equipos que se encuentran actualmente en mantenimiento
Las reservas de equipo multimedia realizadas para el día actual
En la sección de "Tareas Comunes" se muestran links hacia tareas u opciones de todos los módulos de JHard, mostradas, claro está, de acuerdo a la jerarquía de usuario, siendo el administrador el que más privilegios goza.
Página de JHardmin
Descripción
Es la página administrativa de JHard.
Permite cambiar la clave de acceso para cualquier usuario
Muestra los datos de la cuenta que se encuentra logeada
Muestra la lista de usuarios registrados al sistema, y permite editarlos o suprimirlos, si el usuario que ha ingresado al sistema es de tipo Administrador
Muestra las autorizaciones que se hacen a estudiantes, si el usuario que ha ingresado al sistema es de tipo Administrador.
Adminstración de solicitudes, mantenimientos y bitácoras de JRequest
Descripción
Esta página es de uso exclusivo para usuarios de tipo Administrador
Permite manejar las solicitudes de mantenimiento de la facultad, así como las internas para el centro de cómputo de Ingeniería y Arquitectura. Las recibe y el administrador decide cuáles son las que pasan a mantenimiento.
Maneja además el equipo que se encuentra en mantenimiento. Cuando ya ha finalizado se crea una bitácora y se saca el equipo de mantenimiento
Tambien se pueden observar y modificar todas las bitácoras de cada equipo. Se escoge el equipo y muestras sus respectivas bitácoras de estados y sus cambios.
Búsqueda de soluciones de la Wiki desde JRequest
Descripción
Cualquier usuario que ingresa a JHard puede buscar respuestas o soluciones a problemas informáticos, a través de la búsqueda de JRequest. El usuario ingresa y coloca las palabras clave de búsqueda en el cuadro de texto disponible. Luego, con presionar el botón "Buscar" saldrá una lista con los temas relacionados a la búsqueda inmediatamente.
Si no encuentra nada que solucione su problema, para usuarios registrados hay un apartado para enviar la solicitud de soporte técnico a los administradores de JHard
Envío de solicitud de soporte técnico de JRequest
Descripción:
Un sencillo formulario para el envio de solicitudes de soporte técnico. Se muestra el nombre del usuario que enviará la solicitud, la descripción del problema que lo aqueja y que escoja el equipo afectado. De no estar registrado, puede agregarlo por él mismo.
Página de JInvent
Descripción:
Esta página contiene toda la funcionalidad del módulo de JInvent para manejar inventarios de activos fijos para la Unida de Hardware y Software.
Se visualizan los equipos por clasificaciones y jerarquías en el lado izquierdo de la panel dividido
Se muestra el detalle de los equipos y existencias al lado derecho del panel divivido
Para cada clasificación hay links para agregar nuevos equipos
Muestra también las marcas registradas al inventario. Permite agregar, modificar y eliminar existentes.
Muestra las ubicaciones agregadas de la Facultad. También permite el mantenimiento completo
Módulo estrictamente para usuarios de tipo Administrador
JCanon: Reserva de equipo multimedia
Descripción
Permite visualizar todas las reservas de equipo multimedia con su novedoso esquema de calendario (Scheduler)
Permite agregar una nueva reserva de equipo multimedia, escogiendo el tipo de equipo y la existencia a reservar.
Tiene links además para la página administrativa de JCanon, con permisos de visibilidad únicamente para usuarios de tipo Administrador.
Permite, además, visualizar en calendario en una ventana aparte.
JWiki y JProCur: Páginas para contenido
Descripción:
Esta página muestra el contenido tanto para el módulo de JWiki como para JProCur.
Muestra artículos para JWiki, como entradas para JProCur
Las muestra ordenadas por fecha, mostrando en primer lugar la escrita más recientemente.
JWiki y JProCur: Páginas para administración
Descripción
Estas páginas tienen interfaz para escribir nuevas entradas y artículos.
Muestran las entradas o artículos del usuario registrado al sistema.
Permite editar o eliminar dichas entradas o artículos.
Página administrativa
Descripción
Muchas páginas de carácter administrativo en JHard tienen la apariencia de la figura anterior.
Muestra un listado de ítems (en este caso horarios de grupos de laboratorio) con la información básica asociada en cada una de las columnas de la tabla.
En la parte de la derecha de la tabla, muestras links para modificar cada uno de los ítems y para eliminarlo.
Las "tareas comunes" son propias para cada módulo en cuestión, donde se encuentre dicha página administrativa.
ManLab
Descripción:
Las actividades de ManLab se muestran según sean los privilegios del usuario. Para la figura de arriba se muestran las opciones a las que tiene acceso un estudiante, que serían: "Inscribirse a un curso", "Asistencia Clase/Materia" y "Horarios del Laboratorio".
Cada uno de éstos tiene una funcionalidad muy sencilla, con unos cuantos clics el usuario hace las actividades relacionadas para cada uno.
Configuración de la plataforma del sistema
Instalación y Configuración de Tomcat 6.0.20 en Debian/Ubuntu
La siguiente sección supone una instalación de Tomcat desde cero, en una distribución de GNU/Linux basada en Debian (para este caso, se empleo ubuntu-jeos). Se usara un proceso manual, debido a que el paquete nativo presenta muchos problemas a la hora de instalarlo.
Instalación de Java 6
Antes de instalar Tomcat, es necesario asegurarnos que se tiene Java Runtime (JRE) instalado. Para verificar la instalacion del JRE se puede utilizar el siguiente comando:
usuario@ubuntu:/$ dpkg -l | grep sun-java
Que produce una salida similar a esta:
ii sun-java6-bin 6-14-0ubuntu1.8.04 Sun Java(TM) Runtime Environment (JRE) 6
ii sun-java6-jre 6-14-0ubuntu1.8.04 Sun Java(TM) Runtime Environment
Si el comando no produce resultados, podemos instalar Java con el siguiente comando:
root@ubuntu:/# apt-get install sun-java6-jdk
Se mostrara el cuadro para aceptar la licencia de distribución de Java:
Figura 6.1: Configuración de Java JRE 6 en Ubuntu
Figura 6.2: Configuración de Java JRE 6 en Ubuntu
Obteniendo Tomcat 6
Ahora es necesario descargar y descomprimir Tomcat del sitio de Apache Software Foundation (http://tomcat.apache.org ). Al momento de redactar este documento, se utilizo la versión 6.0.20 de Tomcat.
root@ubuntu:~# wget http://apache.osuosl.org/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz
Después de obtener el paquete, procedemos a descomprimirlo:
root@ubuntu:~# tar xf apache-tomcat-6.0.20.tar.gz
Y ahora movemos la carpeta extraída (apache-tomcat-6.0.20) a "/usr/local/tomcat":
root@ubuntu:~# mv apache-tomcat-6.0.20 /usr/local/tomcat
Tomcat requiere la variable "JAVA_HOME" en el "Environment", y añadir la ubicación de la ruta de los binarios a la variable "PATH" (también en el "Environment".
Esto se logra de dos formas, primero editando el archivo ".bashrc" del usuario "root":
root@ubuntu:~# nano .bashrc
Añadiendo al final, las siguientes lineas:
#para el javapath
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export PATH=$JAVA_HOME/bin:$PATH
Nota Importante: la ruta usada en JAVA_HOME puede variar entre diferentes versions de Ubuntu/Debian, asi como entre distribuciones Linux. Verifique la ruta especificada.
Para que este cambio tenga efecto, es necesario que el usuario root, termine la sesión e inicie una nueva. La segunda forma, se describe en la siguiente sección.
Inicio Automático
Para hacer que Tomcat inicie automáticamente cuando inicia el servidor, es necesario crear un script, que llamaremos "Tomcat" en la carpeta "/etc/init.d":
root@ubuntu:~# nano /etc/init.d/tomcat
Ahora copiamos en ese archivo, el siguiente script:
# Tomcat inicio automatico
# description: inicia automaticamente a Tomcat
# processname: tomcat
# pidfile: /var/run/tomcat.pid
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export PATH=$JAVA_HOME/bin:$PATH
case $1 in
start)
sh /usr/local/tomcat/bin/startup.sh
;;
stop)
sh /usr/local/tomcat/bin/shutdown.sh
;;
restart)
sh /usr/local/tomcat/bin/shutdown.sh
sh /usr/local/tomcat/bin/startup.sh
;;
esac
exit 0
Ahora hay que conceder los permisos de ejecución al script, con el comando chmod:
root@ubuntu:/# chmod 755 etc/init.d/tomcat
Y el último paso es crear un vinculo simbólico (acceso directo) entre el script de Tomcat y la carpeta del nivel de ejecución en el que queremos que inicie Tomcat.
root@ubuntu:/# ln -s etc/init.d/tomcat etc/rc1.d/K99tomcat
root@ubuntu:/# ln -s etc/init.d/tomcat etc/rc2.d/S99tomcat
Ahora Tomcat está completamente instalado y funcional.
Desplegando la aplicación
Para desplegar la aplicación, detenemos primero el servidor Tomcat con el comando:
root@ubuntu:/# /etc/init.d/tomcat stop
Renombramos la carpeta "$CATALINA_HOME/webapps/ROOT", crearemos una carpeta nueva para el proyecto, y descomprimiremos el contenido del archivo WAR (jhard.war) en esta:
root@ubuntu:/usr/local/tomcat/webapps/# mv ROOT ROOT.old
root@ubuntu:/usr/local/tomcat/webapps/# mkdir jhard root@ubuntu:/usr/local/tomcat/webapps/# cd JHard root@ubuntu:/usr/local/tomcat/webapps/jhard/# unzip jhard.war root@ubuntu:/usr/local/tomcat/webapps/jhard/# rm jhard.war
Finalmente, podemos iniciamos Tomcat:
root@ubuntu:/# /etc/init.d/tomcat start
Nota Importante: Según los requerimientos minimos de funcionamiento de la aplicación web, es necesario especificar la cantidad de memoria RAM que el proceso de TOMCAT puede reservar para funcionar. Esto se logra, modificando el script catalina.sh, agregándole a la variable CATALINA_OPTS las opciones –Xms256M y –Xmx512M, asi:
CATALINA_OPTS =" –Xms256M –Xmx512M"
Instalación y configuración de MySQL
Para instalar MySQL 5.0, solo necesitamos ejecutar el siguiente comando:
root@ubuntu:/# apt-get install mysql-server-5.0
Al instalar MySQL, se solicita una contraseña para el usuario "root" de MySQL:
Figura 6.3: Configuración MySQL 5.1 en Ubuntu
Después de instalar MySQL, vamos a restaurar la base de datos de jhard, que se encuentra en el archivo jhard.sql:
root@ubuntu:/# mysql -uroot -pCoNtRaSeÑa < jhard.sql
Nota Importante: La minima cantidad de datos, necesaria para que JHard sea funcional, se encuentran en el script SQL jhard.sql.
Creación de usuario y asignación de permisos:
Después de la restauración de la base de datos, vamos a crear un usuario para jhard y asignar los permisos al mismo:
mysql> CREATE USER 'jharduser'@'localhost' IDENTIFIED BY 'jhardpwd';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'jharduser'@'localhost' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE USER 'jharduser'@'%' IDENTIFIED BY 'jhardpwd';
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'jharduser'@'%' WITH GRANT OPTION;
Con esto, MySQL está instalado, la base de datos restaurada.
Firewall para JHard:
Si bien la configuración avanzada de un Firewall, va más alla del alcance de este documento, podemos hacer un par de recomendaciones que el administrador del servidor en el que se encuentre JHard, debe tomar en cuenta.
Suponiendo una herramienta de consola y una configuración de texto plano, se recomienda utilizar Shorewall (http://www.shorewall.net/) como herramienta para configurar un Firewall.
Sino, también se puede utilizar ipkungfu (http://freshmeat.net/projects/ipkungfu/), que provee un Firewall preconfigurado ("Out of the Box") que le permitirá configurar fácilmente las reglas del mismo, en archivos de configuración sencillos y bien documentados.
Recuerde NO bloquear los puertos de Tomcat (8080 por defecto), y MySQL (3306).
Diccionario de datos
Página anterior | Volver al principio del trabajo | Página siguiente |