5.3 KiB
Desarrollo Java en Contenedor: NetBeans IDE
Pre-requisitos
Empezando
Usar el cliente git para clonar el repositorio.
git clone https://github.com/spara/registration-docker.git
Abrir NetBeans IDE, hacer clic en Open Project...
Seleccionar app
y hacer clic en Open Project
.
Construyendo la aplicación
La aplicación es una aplicación Spring MVC básica que recibe datos del usuario de un formulario, almacena y consulta la informacion en la base de datos.
La aplicación se construye usando Maven. Para construir la aplicación hacer clic en Run
> Build Project
.
Los resultados del build serán mostrados en la consola.
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. hacer clic en el botón Manager App
para visualizar las aplicaciones desplegadas. Cuando se solicite por usuario y contraseña, ingresar system
y manager
respectivamente para entrar a la página de Tomcat Web Application Manager.
Puedes usar la página Manager para Start
, Stop
, Reload
o Undeploy
aplicaciones web.
Para ir a la aplicación, hacer clic en el link /UserSignup
.
Depurando la Aplicación
En la aplicación, hacer clic en Signup
para crear un nuevo usuario. Completar el formulario de registro y hacer clic en Submit
Hacer clic en Yes
para confirmar.
Probar el inicio de sesión.
Oh no!
Configurar Depuración Remota
En el menu hacer clic en Debug
> Attach Debugger...
Asegurar que el puerto establecido es 8000, hacer clic en OK
.
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 almacenarse en la base de datos.
Dado que habilitamos el depurador remoto previamente, debe ver los Daemon Threads para Tomcat en la ventana Debugging
. 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, hacer clic en Submit
, hacer clic en yes
NetBeans 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
Hacer clic en el icono Continue
o presionar F5
para permitir ejecutar el código.
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 puede cambiar el punto de interrupción para setPassword. Tratar de acceder a la aplicación. Ver el valor de la contraseña en la ventana variables, 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, verifica 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 puedes 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. Presionar F11
o hacer clic en Run
> Build Project
para actualizar el código desplegado. Iniciar sesión otra vez y mirar 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 (F5
) y debe acceder exitosamente.