Escribir código es la mitad de la batalla. Todavía hay que hacer que funcione correctamente. Los IDE y las herramientas de depuración nos ayudan mucho con esto.
Usando IntelliJ IDEA como ejemplo, propongo familiarizarnos con cómo podemos saber qué sucede con nuestro código cuando se ejecuta. La depuración es un tema amplio, por lo que esta revisión no ofrece buceo profundo, como un buceador. Pero espero hacer snorkel seguro)
A continuación, debemos ejecutar el proyecto que hemos elegido en el servidor. Este proceso se describe en una pequeña documentación que se puede encontrar en el propio proyecto:
Tras esto, en el log del servidor podremos ver cómo se ha “implementado” el nuevo proyecto:
Después de eso, vamos a la página
Si todo está bien, veremos un mensaje sobre esto a continuación:
Presione Enter para ir a la fuente encontrada:
Entonces vemos que al registrarse se llama a memberController.register , aparentemente debe ser algún tipo de clase java. Haga clic
De hecho, existe tal clase. Entremos en ello. Aparentemente, debería haber un método de registro. Haz clic
De hecho, lo encontramos. Aparentemente, el registro se produce aquí, en memberRegistration.register . Presione Ctrl y haga clic en el método para "caer" en él:
Establezcamos ahora un “punto de interrupción” o Break Point. Este es un marcador que indica dónde debe pausarse la ejecución del código. En este momento tendremos la oportunidad de aprender muchas cosas interesantes. Para ponerlo, debe hacer clic en el lugar a la derecha del número de línea.
En la página http://localhost:8080/wildfly-hibernate4 complete los campos y haga clic en el botón Registrarse. El icono de idea en el panel parpadeará:
Al ir a Idea, puede ver que hay mucha información interesante en el panel de depuración:
Aquí puede ver el valor de los campos del objeto. Por ejemplo, en qué consiste un Miembro registrado:
Excelente. qué más podemos hacer? Podemos abrir el menú contextual y seleccionar Evaluar expresión allí (o mediante el menú Ejecutar -> Evaluar expresión). Mejor aún, en el panel de control del depurador:
Esta es una habilidad genial en un punto de interrupción, tener acceso a todo a lo que tiene acceso ese punto de código, para ejecutar cualquier código que pueda ejecutarse en ese punto. Por ejemplo:
También hay botones de control en el panel de control del depurador que son responsables de dónde desea mover el control de flujo del programa. ¿No es mágico?) Al presionar el botón F8 (Salir), recorremos el código sin ingresar métodos. Al presionar F9, dejamos de recorrer las líneas de código con el depurador y le damos al depurador control sobre la ejecución del programa. Si presionamos F7 (Step Into), revisaremos el código, ingresando cada método que encontremos en el camino. Por cierto, presta especial atención a este bloque de información:
Esto muestra el hilo en el que estamos y los métodos en la pila del hilo actual. Pero eso no es todo. Para mayor comodidad, puede abrir la pestaña de marcos. Para ello se debe habilitar:
Ahora en la pestaña Marcos vemos información sobre la transición de un método a otro, porque Comencé a recorrer el código usando Step Into.
Como vemos, no siempre podemos ser trasladados al lugar donde se está ejecutando actualmente el programa. Ahora estamos en "getDelegate:469, AbstractEntityManager(org.jboss.as.jpa.container)". Pero, de hecho, estamos en implementación. Esto se evidencia en la clase especificada por esto:
Miremos esto. Como sabemos, apunta al objeto actual. Estamos en TransactionScopedEntityManager. ¿Por qué Idea no puede mostrarnos el código? El hecho es que IntelliJ Idea actualmente no conoce ningún TransactionScopedEntityManager, porque no está conectado a nuestro proyecto (no está en las dependencias del proyecto). Cuando se ejecuta un servidor de aplicaciones, hay muchísimas bibliotecas diferentes ejecutándose en su interior. Pero sabemos muy poco sobre ellos, porque... En general, no necesitamos profundizar en lo interno, sólo necesitamos que funcione. Pero a veces el trabajo o el interés deportivo lo requiere. Luego, debe informar a Idea sobre esta biblioteca para que sepa dónde obtener el código de clase.
Ahora esperemos el resultado. Él no te hará esperar)
Ahora, necesitamos encontrar el código fuente en alguna parte. Y hay 2 opciones:
Pasemos ahora a describir la dependencia. En esta página puedes descargar el código fuente. Genial, ahora tenemos el código descargado. Ya sólo queda conectar la biblioteca. Se conecta de forma extremadamente sencilla. Necesitamos abrir la configuración del proyecto:
Allí seleccionamos "Bibliotecas" y agregamos los códigos fuente recibidos a la sección "Fuentes", y en la sección "Clases" indicamos el archivo jar de la biblioteca del directorio WildFly, que encontramos usando Far Manager. Después de esto, cuando naveguemos por F7, veremos el contenido de las clases AbstractEntityManager y TransactionScopedEntityManager, y también estarán disponibles mediante una búsqueda por clase usando Ctrl+N.
Ahora el punto de interrupción solo se activará cuando el nombre sea Maximilian. Al hacer clic en el botón Más, tendrá a su disposición un conjunto ampliado de configuraciones para puntos de interrupción.
Y cree una nueva regla para el tipo de excepción seleccionado:
Por ejemplo, para NPE:
#viacheslav
Introducción
Parte de escribir código es depurarlo. Y si sus tareas incluyen soporte de código, habrá aún más depuración. Bueno, además, con la ayuda de la depuración, puedes examinar el trabajo de las bibliotecas y marcos utilizados tan profundamente como sumergirte en la jungla del código de otra persona. Para nuestra inmersión necesitaremos:- Entorno de desarrollo: IntelliJ Idea Community Edition gratuita
- Maven instalado
- Servidor de aplicaciones WildFly 12.0.0.Final
- Código fuente para ejemplos oficiales: Código fuente de inicio rápido
bin\standalone.bat
\hibernate4\README.adoc
Como se indica en esta documentación, necesitamos ejecutar el comando en el directorio hibernate4: mvn clean package wildfly:deploy
Estamos esperando un mensaje de que la compilación se completó con éxito:
http://localhost:8080/wildfly-hibernate4
y deberíamos mostrar una página con el formulario de “ Registro de miembros ”. Entonces, nuestra preparación para los experimentos está completa y podemos comenzar)) Habrá muchas imágenes más adelante para mayor claridad, así que prepárese)
Depuración remota
Entonces, necesitamos configurar el modo de depuración para que nuestro IDE controle la ejecución del código en el servidor de aplicaciones. IntelliJ Idea viene en dos versiones: gratuita (Community) y de pago (Ultimate). Este último puede probarse oficialmente en forma de EAP. En la versión Ultimate, todo es simple: el servidor de aplicaciones se puede iniciar directamente desde el IDE en modo de depuración. Pero en la versión comunitaria debes hacer algunas cosas manualmente. Por tanto, consideremos un caso más complicado, es decir. configuración en la versión comunitaria. La versión comunitaria tiene algunas limitaciones. En particular, no puede ejecutar un servidor de aplicaciones desde él. Pero puede configurar la depuración remota (Remote Debug), cuando en algún lugar separado hay un servidor en ejecución con la aplicación que necesitamos. Usemos la descripción de la configuración desde aquí: Depuración remota de Wildfly en la edición comunitaria IntelliJ Idea (configuración de configuración de ejecución remota para el puerto 8787). Después de la configuración, lanzamos nuestra nueva configuración en modo Debug:Proceso de depuración
Depuremos guardando el registro. Para ello, primero debemos decidir el lugar donde exploraremos. A juzgar por la ventana, necesitamos un botón "Registrarse". Busquémoslo en el código. Entonces, necesitamos un elemento, debería tener el texto: "Registrarse". O ella debería tener algo que ver con eso. Haga clicCtrl+Shift+F
y busque Registrarse entre comillas. Vemos que hay uno en index.xhtml.
Ctrl+N
y busque:
Ctrl+F12
y busca el método de registro.
Conexión de bibliotecas de terceros para depuración
Primero, nosotros mismos debemos entender qué tipo de biblioteca es la que necesita estar conectada. La primera forma es la más difícil: buscar en Internet. La velocidad y el resultado de encontrar un resultado dependen en gran medida de qué tan bien se gestionó el proyecto. Por ejemplo, WildFly tiene un repositorio abierto. Entonces, cuando busquemos en Google "TransactionScopedEntityManager", iremos a https://github.com/wildfly/wildfly/tree/master/jpa/subsystem y encontraremos que necesitamos wildfly-jpa. El segundo método es correcto. Donde está el servidor, mira allí. Varios medios pueden ayudar con esto. Por ejemplo, en Windows podría ser Far Manager . A continuación se muestra un ejemplo de un algoritmo de búsqueda. Una vez instalado y ejecutado, use Tab para cambiar a una de las pestañas, usandoAlt+F1
la pestaña izquierda o Alt+F2
la derecha, y seleccione la partición que necesitamos en el disco duro. Es muy posible que el directorio de Far Manager esté abierto en Far Manager después de la instalación. Para ir a la raíz del disco, presione Ctrl + \
. Usando, Alt+F
abra la ventana de búsqueda, comience a escribir el nombre del directorio y presione Entrar después de encontrar el directorio. Esta búsqueda es inteligente y resalta aquellos directorios que coinciden con el texto de búsqueda. Si ingresa caracteres para los cuales no hay carpetas, dichos caracteres no se podrán ingresar. De esta manera nos dirigimos al directorio del servidor de aplicaciones. Digamos que no sabemos dónde están ubicados los módulos en el servidor. Quizás esta sea la primera vez en tu vida que oyes hablar de algún tipo de WildFly. Por lo tanto, haga clic inmediatamente aquí Alt+F7
para buscar archivos. Entonces, la lógica dicta: necesitamos un archivo con la biblioteca. Es decir, necesitamos un frasco. Debería haber una clase TransactionScopedEntityManager dentro. Porque clase = archivo, luego busque "contiene". Es decir, algo como esto:
- Súper útil versioneye.com
- Repositorio central de Maven
GO TO FULL VERSION