Skip to content

Latest commit

 

History

History
196 lines (102 loc) · 7.7 KB

IntelliJ-README_es.md

File metadata and controls

196 lines (102 loc) · 7.7 KB

Desarrollo Java en Contenedor: IntelliJ Community Edition

Pre-requisitos

Empezando

En IntelliJ, clonar el repositorio. Clic en Check out from Version Control > Github

Si esta es la primera vez usando Intellij con Github, ingresar a la cuenta de Github.

Clonar el repositorio registration-docker.

Clic en Import project from external model, seleccionar Maven. Clic Next

Seleccionar Search for projects recursively. Clic Next

Seleccionar el proyecto y clic en Next

Seleccionar el JDK y clic en Next

Clic en Finish

Clic en Project View para abrir el proyecto.

Construyendo la aplicación

La aplicación es una aplicación Spring MVC básica que recibe datos del usuario de un formulario, almacena los datos en la base de datos, y realiza consultas.

La aplicación se construye usando Maven. Para construir la aplicación clic en el icono de la parte inferior izquierda de IntelliJ y seleccionar Maven Projects.

La ventana Maven Projects se abrirá al lado derecho. Las tareas de maven clean y install necesitan ser establecidas para construir la aplicación.

Para establecer la tarea clean, clic en Lifecycle para visualizar el árbol de tareas. Clic derecho en clean y seleccionar Create 'UserSignup [clean]'...

Clic OK en la ventana Create Run/Debug Configuration.

De manera similar configurar la tarea install. Clic en install en el árbol de Lifecycle. Seleccionar Create 'UserSignup[install]'...

Clic OK en la ventana Create Run/Debug Configuration.

Para construir la aplicación ejecutar clean

Luego ejecutar install

Cuando la aplicación se construya se visualizará un mensaje de éxito en la ventana de Log.

Ejecutando la aplicación

Abrir un terminal e ir al directorio de la aplicación. Iniciar la aplicación con docker-compose

> docker-compose up 

Docker construirá las imágenes para Apache Tomcat y MySQL e iniciará los contenedores. También, montará el directorio de la aplicación (./app/target/UserSignup) como volumen de datos en el host del sistema al directorio webapps Tomcat en el contenedor del servidor web.

Abrir una ventana en el explorador e ir a: 'localhost:8080'; debes ver la página de inicio de Tomcat

Cuando la imagen de Tomcat fue construida, los roles de los usuarios fueron configurados. Clic en el botón Manager App para visualizar las aplicaciones desplegadas. Cuando se solicite el usuario y la contraseña, ingresar system y manager respectivamente para entrar a la página de Tomcat Web Application Manager.

El posible usar la página Manager para Start, Stop, Reload o Undeploy aplicaciones web.

Para ir a la aplicación, clic en el link /UserSignup.

Depurando la aplicación

En la aplicación, clic en Signup para crear un nuevo usuario. Completar el formulario de registro y clic en Submit

Clic Yes para confirmar.

Probar el inicio de sesión.

Oh no!

Configurar Depuración Remota

Tomcat soporta depuración remota usando Java Platform Debugger Architecture (JPDA). Debug Remoto fue habilitado cuando la imagen tomcat (registration-webserver) fue construida.

Para configurar la depuración remota en IntelliJ, clic en Run > Edit Configuration ...

Agregar una nueva configuración remota.

En la ventana Run\Debug Configurations, establecer el Name de la configuración y en Settings establecer el puerto '8000' el puerto de depuración de Tomcat JPDA por defecto. Clic en OK para guardar la configuración.

Buscando el Error

Dado que el problema es la contraseña, veamos como la contraseña se establece en la clase User. En la clase User, el setter para la contraseña es mezclado usando rot13 antes de ser almacenado en la base de datos.

Tratar registrando un nuevo usuario usando el depurador. En el menu clic en Run > Debug...

Elegir la configuración de depuración remota de Tomcat. La consola de depuración se motrará en la parte inferior de IntelliJ.

Establecer un punto de interrupción para la clase User donde el password es establecido.

Registrar un nuevo usuario con el usuario de 'Moby' y con 'm0by' como contraseña, clic Submit, clic yes

IntelliJ mostrará el código en el punto de interrupción y el valor de la contraseña en la ventana variables. Observar que el valor es m0by

Clic en Resume Program para permitir ejecutar el código o presionar F8 para saltar el punto de interrupción.

A continuación, establecer el punto de interrupción en getPassword en la clase User para ver los valores retornados para la contraseña. También es posible cambiar el punto de interrupción a setPassword.

Tratar de acceder a la aplicación. Ver el valor de la contraseña en la ventana variables de Eclipse, observar que es z0ol el cual es m0by usando ROT13.

En esta aplicación MVC el UserController usa el método findByLogin en la clase UserServiceImpl la cual usa el método findByUsername para recuperar la información de la base de datos. A continuación, verificar que la contraseña del formulario conincide con la contraseña del usuario. Dado que la contraseña del formulario de inicio de sesión no es mezclada usando ROT13, este no coincide con la contraseña del usuario y no es posible acceder a la aplicación.

Para solucionar esto, aplicar ROT13 a la contraseña agregando

import com.docker.UserSignup.utit.Rot13

String passwd = Rot13.rot13(password);

Establecer un punto de interrupción en UserServiceImpl en el método findByLogin. Iniciar sesión otra vez y verificar los valores para el punto de interrupción. La variable 'passwd' es 'z0ol' la cual coincide con la contraseña para el usuario moby.

Continuar (F8) y debe acceder exitosamente.