Skip to content

Commit 82ef9a0

Browse files
eddumelendezMano Marks
authored andcommitted
Translate Java Debugging Section to Spanish (docker-archive-public#57)
* Translate Java Debugging Section to Spanish Signed-off-by: Eddú Meléndez <[email protected]> * Fix comment
1 parent df7676b commit 82ef9a0

File tree

5 files changed

+532
-0
lines changed

5 files changed

+532
-0
lines changed

developer-tools/README_es.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Tutoriales de Herramientas de Desarrollo
2+
3+
Este directorio contiene tutoriales sobre como configurar y usar herramientas de desarrollo comunes con docker. Te animamos a [contribuir](../contribute.md) con tus propios tutoriales aquí.
4+
5+
## IDEs
6+
7+
Con la introducción de [Docker for Mac](https://www.docker.com/products/docker#/mac) y [Docker for Windows](https://www.docker.com/products/docker#/windows), los desarrolladores pueden ahora desarrollar dentro del contenedor de la misma manera que lo hacen los usuarios que utilizan [Docker for Linux](https://www.docker.com/products/docker#linux). Con mejoras en la administración de volúmenes, Docker permite detectar cuando el código en los volúmenes cambia, y actualizar el código en el contenedor. Esto significa que ahora es posible depurar un contenedor en vivo que se encuentra en ejecución, sin tener que reconstruir el contenedor.
8+
9+
### [Herramientas de Desarrollo Java](https://github.com/docker/labs/tree/master/developer-tools/java-debugging) incluye:
10+
+ Eclipse
11+
+ IntelliJ
12+
+ Netbeans
Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
## Desarrollo Java: Eclipse
2+
3+
### Pre-requisitos
4+
5+
* [Docker for OSX or Docker for Windows](https://www.docker.com/products/docker)
6+
* [Eclipse](http://www.eclipse.org/downloads/) (instalar Eclipse IDE para desaroolladores Java EE)
7+
* [Java Development Kit](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
8+
* [Maven for Eclipse](http://www.eclipse.org/m2e/) (ver instrucciones para agregar Maven plug-in en Eclipse)
9+
10+
### Empezando
11+
12+
En Eclipse, clonar el repositorio [registration-docker](https://github.com/spara/registration-docker.git)
13+
14+
`File`> `Import`
15+
Seleccionar `Git`> `Projects`> `Next`
16+
17+
![](images/eclipse_git_import_repo2.png)
18+
19+
Seleccionar `Clone URI`> `Next`
20+
21+
![](images/eclipse_git_clone_uri2.png)
22+
23+
Ingresar la [`url del repositorio`](https://github.com/spara/registration-docker.git)> `Next`
24+
25+
![](images/eclipse_git_repo_uri2.png)
26+
27+
`Seleccionar el branch master`> `Next`
28+
29+
![](images/eclipse_git_select_branch2.png)
30+
31+
`Ingresar destination directory`> `Next`
32+
33+
![](images/eclipse_git_local_destination2.png)
34+
35+
Seleccionar el asistente de importación, `Import existing Eclipse project`> `Next`
36+
37+
![](images/eclipse_git_import_wizard2.png)
38+
39+
Seleccionar `registration-docker`> `Finish`
40+
41+
![](images/eclipse_git_import_project2.png)
42+
43+
### Construyendo la aplicación
44+
45+
La aplicación es una aplicación Spring MVC básica que recibe datos del usuario de un formulario, escribe los datos en la base de datos, y consulta la base de datos.
46+
47+
La aplicación se construye usando Maven. Para construir la aplicación clic en `Run` > `Run configurations`
48+
49+
![](images/eclipse_maven_run_config3.png)
50+
51+
Seleccionar `Maven build` > `New`
52+
53+
![](images/eclipse_maven_build_new.png)
54+
55+
Ingresar `Name` para la configuración.
56+
57+
Establecer el directorio base de la aplicación `<path>/registration-docker/app`.
58+
59+
Establecer `Goals` a `clean install`.
60+
61+
Clic `Apply`
62+
63+
Clic `Run`
64+
65+
![](images/eclipse_maven_run_config_apply.png)
66+
67+
Los resultados del build serán mostrados en la consola.
68+
69+
![](images/eclipse_maven_console_build_result.png)
70+
71+
### Ejecutando la aplicación
72+
73+
Abrir un terminal e ir al directorio de la aplicación. Iniciar la aplicación con docker-compose
74+
75+
<pre>&gt; docker-compose up </pre>
76+
77+
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.
78+
79+
Abrir una ventana en el explorador e ir a:
80+
'localhost:8080'; debes ver la página de inicio de Tomcat
81+
82+
![](images/tomcat_home3.png)
83+
84+
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 por usuario y contraseña, ingresa `system` y `manager` respectivamente para entrar a la página de Tomcat Web Application Manager.
85+
86+
![](images/tomcat_web_application_manager3.png)
87+
88+
Puedes usar la página Manager para `Start`, `Stop`, `Reload` o `Undeploy` aplicaciones web.
89+
90+
Para ir a la aplicación, clic en el link `/UserSignup`.
91+
92+
![](images/app_index_page3.png)
93+
94+
### Depurando la Aplicación
95+
96+
En la aplicación, clic en `Signup` para crear un nuevo usuario. Completar el formulario de registro y clic en `Submit`
97+
98+
![](images/app_debug_signup2.png)
99+
100+
Clic `Yes` para confirmar.
101+
102+
![](images/app_debug_signup_confirm.png)
103+
104+
Probar el inicio de sesión.
105+
106+
![](images/app_debug_login2.png)
107+
108+
Oh no!
109+
110+
![](images/app_debug_login_fail2.png)
111+
112+
#### Configurar Depuración Remota
113+
114+
Tomcat soporta depuración remota usando Java Platform Debugger Architecture (JPDA). Debug Remoto fue habilitado cuando la imagen tomcat (registration-webserver) fue construida.
115+
116+
Para configurar la depuración remota en Eclipse, clic en `Run` > `Debug Configurations ...`
117+
118+
![](images/eclipse_debug_configure2.png)
119+
120+
Seleccionar `Remote Java Application` y clic en el icono `Launch New Configuration`
121+
122+
![](images/eclipse_debug_configure_new.png)
123+
124+
Ingresa `Name` para la configuración. Selecciona el proyecto usando el botón `browse`. Clic en `Apply` para guardar la configuración y clic en `Debug` para iniciar la conexión de debug entre Tomcat y Eclipse.
125+
126+
![](images/eclipse_debug_configure_docker.png)
127+
128+
#### Buscando el Error
129+
130+
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](https://en.wikipedia.org/wiki/ROT13) antes de ser salvado en la base de datos.
131+
132+
![](images/eclipse_debug_User_password.png)
133+
134+
Tratar registrando un nuevo usuario usando el depurador. En Eclipse, cambiar la vista o perspectiva del depurador haciendo clic en `Window` > `Perspective` > `Open Perspective` > `Debug`
135+
136+
![](images/eclipse_debug_perspective.png)
137+
138+
Eclipse cambiará a la perspectiva debug. Dado que habilitamos el depurador remoto previamente, debes ver los Daemon Threads para Tomcat en la ventana de debug. Establece un punto de interrupción para la clase User donde el password es establecido.
139+
140+
![](images/eclipse_debug_User_breakpoint.png)
141+
142+
Registrar un nuevo usuario con el usuario de 'Moby' y con 'm0by' como contraseña, clic `Submit`, clic `yes`
143+
144+
![](images/app_register_moby2.png)
145+
146+
Eclipse 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`
147+
148+
![](images/eclipse_debug_User_moby.png)
149+
150+
Clic en `resume` o presiona `F8` para permitir ejecutar el código.
151+
152+
![](images/eclipse_debug_resume.png)
153+
154+
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.
155+
156+
![](images/eclipse_debug_User_getPassword.png)
157+
158+
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.
159+
160+
![](images/eclipse_debug_User_show_user.png)
161+
162+
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 contrasenña del formulario conincide con la contraseña del usuario. Dado que la contraseña del formulario de inicio de sesión no es mezclado usando ROT13, este no coincide con la contraseña del usuario y no puedes acceder a la aplicación.
163+
164+
Para solucionar esto, aplicar ROT13 a la contraseña agregando
165+
166+
```
167+
import com.docker.UserSignup.utit.Rot13
168+
169+
String passwd = Rot13.rot13(password);
170+
```
171+
![](images/eclipse_debug_UserServiceImpl_code.png)
172+
173+
Establecer un punto de interrupción en UserServiceImpl en el método findByLogin. 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.
174+
175+
![](images/eclipse_debug_UserServiceImpl_values.png)
176+
177+
Continuar (`F8`) y debes acceder exitosamente.
178+
179+
![](images/app_debug_success.png)
Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
## Desarrollo Java en Contenedor: IntelliJ Community Edition
2+
3+
### Pre-requisitos
4+
5+
* [Docker for OSX or Docker for Windows](https://www.docker.com/products/docker)
6+
* [IntelliJ Community Edition](https://www.jetbrains.com/idea/download/)
7+
* [Java Development Kit](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
8+
9+
10+
### Empezando
11+
12+
En IntelliJ, clonar el repositorio. Clic en `Check out from Version Control` > `Github`
13+
14+
![](images/intelliJ_git_open_project.png)
15+
16+
Si esta es tu primera vez usando Intellij con Github, ingresa tu cuenta de Github.
17+
![](images/intelliJ_git_login.png)
18+
19+
Clonar el repositorio [registration-docker](https://github.com/spara/registration-docker.git).
20+
21+
![](images/intelliJ_git_clone_repository.png)
22+
Clic en `Import project from external model`, seleccionar `Maven`. Clic `Next`
23+
24+
![](images/intellij_github_import_maven.png)
25+
26+
Seleccionar `Search for projects recursively`. Clic `Next`
27+
28+
![](images/intellij_github_import_maven_configure.png)
29+
30+
Seleccionar el proyecto y clic en `Next`
31+
32+
![](images/intellij_github_import_maven_select.png)
33+
34+
Seleccionar el JDK y clic en `Next`
35+
36+
![](images/intellij_github_import_select_sdk.png)
37+
38+
Clic en `Finish`
39+
40+
![](images/intellij_github_import_project_finish.png)
41+
42+
Clic en `Project View` para abrir el proyecto.
43+
44+
![](images/intelliJ_git_open_project_gui.png)
45+
46+
### Construyendo la aplicación
47+
48+
La aplicación es una aplicación Spring MVC básica que recibe datos del usuario de un formulario, escribe los datos en la base de datos, y consulta la base de datos.
49+
50+
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`.
51+
52+
![](images/intellij_maven_setup.png)
53+
54+
La ventana `Maven Projects` se abrirá al lado derecho. Las tareas de maven `clean` y `install` necesitan ser establecidas para construir la aplicación.
55+
56+
Para establecer la tarea `clean`, clic en `Lifecycle` para visualizar el árbol de tareas. Clic derecho en `clean` y seleccionar `Create 'UserSignup [clean]'...`
57+
58+
![](images/intellij_maven_goal_clean.png)
59+
60+
Clic `OK` en la ventana `Create Run/Debug Configuration`.
61+
62+
![](images/intellij_maven_goal_clean_menu.png)
63+
64+
De manera similar configurar la tarea `install`. Clic en `install` en el árbol de Lifecycle. Seleccionar `Create 'UserSignup[install]'...`
65+
66+
![](images/intellij_maven_goal_install.png)
67+
68+
Clic `OK` en la ventana `Create Run/Debug Configuration`.
69+
70+
![](images/intelligj_maven_goal_install_menu.png)
71+
72+
Para construir la aplicación ejecutar `clean`
73+
74+
![](images/intellij_maven_goal_clean_run.png)
75+
76+
Luego ejecutar `install`
77+
78+
![](images/intellij_maven_goal_install_run.png)
79+
80+
Cuando la aplicación se construya se visualizará un mensaje de éxito en la ventana de Log.
81+
82+
![](images/intellij_maven_goal_install_log.png)
83+
84+
### Ejecutando la aplicación
85+
86+
Abrir un terminal e ir al directorio de la aplicación. Iniciar la aplicación con docker-compose
87+
88+
<pre>&gt; docker-compose up </pre>
89+
90+
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.
91+
92+
Abrir una ventana en el explorador e ir a:
93+
'localhost:8080'; debes ver la página de inicio de Tomcat
94+
95+
![](images/tomcat_home3.png)
96+
97+
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 por usuario y contraseña, ingresa `system` y `manager` respectivamente para entrar a la página de Tomcat Web Application Manager.
98+
99+
![](images/tomcat_web_application_manager3.png)
100+
101+
Puedes usar la página Manager para `Start`, `Stop`, `Reload` o `Undeploy` aplicaciones web.
102+
103+
Para ir a la aplicación, clic en el link `/UserSignup`.
104+
105+
![](images/app_index_page3.png)
106+
107+
### Depurando la aplicación
108+
109+
En la aplicación, clic en `Signup` para crear un nuevo usuario. Completar el formulario de registro y clic en `Submit`
110+
111+
![](images/app_debug_signup2.png)
112+
113+
Clic `Yes` para confirmar.
114+
115+
![](images/app_debug_signup_confirm.png)
116+
117+
Probar el inicio de sesión.
118+
119+
![](images/app_debug_login2.png)
120+
121+
Oh no!
122+
123+
![](images/app_debug_login_fail2.png)
124+
125+
#### Configurar Depuración Remota
126+
127+
Tomcat soporta depuración remota usando Java Platform Debugger Architecture (JPDA). Debug Remoto fue habilitado cuando la imagen tomcat (registration-webserver) fue construida.
128+
129+
Para configurar la depuración remota en IntelliJ, clic en `Run` > `Edit Configuration ...`
130+
131+
![](images/intelij_debug_run_edit_configurations.png)
132+
133+
Agregar una nueva configuración remota.
134+
135+
![](images/intellij_debug_add_remote_configuration.png)
136+
137+
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.
138+
139+
![](images/intellij_debug_tomcat_remote_settings.png)
140+
141+
#### Buscando el Error
142+
143+
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](https://en.wikipedia.org/wiki/ROT13) antes de ser salvado en la base de datos.
144+
145+
![](images/intellij_debug_User_password.png)
146+
147+
Tratar registrando un nuevo usuario usando el depurador. En el menu clic en `Run` > `Debug...`
148+
149+
![](images/intellij_run_debug.png)
150+
151+
Elegir la configuración de depuración remota de Tomcat. La consola de depuración se motrará en la parte inferior de IntelliJ.
152+
153+
![](images/intellij_debug_choose_remote_tomcat.png)
154+
155+
Establecer un punto de interrupción para la clase User donde el password es establecido.
156+
157+
![](images/intellij_debug_set_breakpoint_password.png)
158+
159+
Registrar un nuevo usuario con el usuario de 'Moby' y con 'm0by' como contraseña, clic `Submit`, clic `yes`
160+
161+
![](images/app_register_moby2.png)
162+
163+
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`
164+
165+
![](images/intellij_debug_User_moby.png)
166+
167+
Clic en `Resume Program` para permitir ejecutar el código o presionar `F8` para saltar el punto de interrupción.
168+
169+
![](images/intellij_debug_resume.png)
170+
171+
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.
172+
173+
![](images/intellij_debug_User_getPassword.png)
174+
175+
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.
176+
177+
![](images/intellij_debug_User_show_user.png)
178+
179+
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 contrasenña del formulario conincide con la contraseña del usuario. Dado que la contraseña del formulario de inicio de sesión no es mezclado usando ROT13, este no coincide con la contraseña del usuario y no puedes acceder a la aplicación.
180+
181+
Para solucionar esto, aplicar ROT13 a la contraseña agregando
182+
183+
```
184+
import com.docker.UserSignup.utit.Rot13
185+
186+
String passwd = Rot13.rot13(password);
187+
```
188+
![](images/intellij_debug_UserServiceImpl_code.png)
189+
190+
Establecer un punto de interrupción en UserServiceImpl en el método findByLogin. 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.
191+
192+
![](images/intellij_debug_UserServiceImpl_values.png)
193+
194+
Continuar (`F8`) y debes acceder exitosamente.
195+
196+
![](images/app_debug_success.png)

0 commit comments

Comments
 (0)