Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Java: debug di applicazioni remote

In questo articolo illustreremo un esempio pratico di debug remoto utilizzando l'IDE Eclipse e l'application server JBOSS Wildfly in ambiente Windows.
In questo articolo illustreremo un esempio pratico di debug remoto utilizzando l'IDE Eclipse e l'application server JBOSS Wildfly in ambiente Windows.
Link copiato negli appunti

Ci sono situazioni in cui è complesso riuscire a riprodurre locale una problematica evidenziata in ambiente di test o di produzione e, per una rapida risoluzione, vorremmo poter collegare il nostro ambiente di sviluppo ad un server remoto, introdurre breakpoints all'interno del codice ed eseguire dei test analizzando il flusso di esecuzione. Di seguito verrà mostrato un esempio pratico di debug remoto tramite l'IDE Eclipse e l'application server JBOSS Wildfly in ambiente Windows.

Consideriamo come esempio il debug di un'applicazione Web presente su un server remoto. Per poter collegare l'IDE di sviluppo è necessario che il server stesso venga mandato in esecuzione
specificando una serie di argomenti di input per la Java Virtual Machine. Nello specifico l'istruzione di startup dell'application server deve contenere i seguenti parametri: -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n.

-Xdebug abilita la JVM remota per la modalità debugging, mentre -Xrunjdwp specifica dettagli di connessione tra cui:

  • transport: può assumere i valori dt_socket per una socket interface oppure shmem per l'utilizzo di una zona di memoria condivisa utile quando l'applicazione ed il debugger risiedono sulla stessa mecchina.
  • address: porta di ascolto dell'application server per il debug remoto.
  • suspend: può assumere i valori y per indicare la sospensione dell'applicazione fino a che non ci sono debugger remoti connessi oppure n per indicare la non sospensione dell'applicazione anche in assenza di debugger remoti connessi.

Nel nostro caso andiamo a realizzare una semplice Dynamic Web Application, contenente una servlet da richiamare, utilizzando il wizard di Eclipse. Esportiamo il pacchetto war dell'applicativo, lo inseriamo nella directory deployments del server e ci predisponiamo per il lancio di JBoss Wildfly con i parametri precedentemente illustrati.

Per poter modificare gli argomenti forniti in input alla JVM nella fase di startup di JBoss, editiamo il file standalone.conf.bat contenuto nella directory bin del server
modificando la linea set "JAVA_OPTS=-Xms64M -Xmx512M -XX:MaxPermSize=256M" in set "JAVA_OPTS=-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n -Xms64M -Xmx512M -XX:MaxPermSize=256M".

Posizioniamoci all'interno della directory bin di JBOSS utilizzando una console Windows, ed eseguiamo il file standalone.bat. Vedremo nella fase iniziale una stampa simile alla seguente:

Figura 1. JBOSS Startup in remote debug

dove possiamo notare la presenza dei parametri necessari all'avvio nella modalità debug remoto. Apriamo l'IDE Eclipse nella quale è presente alla nostra web application e inseriamo un breakpoint all'interno del codice della servlet di test. Successivamente utilizziamo l'icona di Debug, presente sulla toolbar dell'IDE, scegliendo all'apertura del menu l'opzione "Debug Configurations":

Figura 2. IDE Debug

Nella successiva schermata selezioniamo "Remote Java Application" e clicchiamo sul pulsante della toolbar per la creazione di una nuova launch configuration come indicato nella seguente immagine:

Figura 3. Configuratione

Il risultato dell'operazione precedente è l'apertura del pannello per la configurazione dei dettagli di connessione della nostra applicazione. Nell'esempio il nome dell'applicazione di cui effettuare il debug remoto è RemoteTestWebApp, nome che andremo ad inserire nel campo "Project". Dobbiamo invece aver cura di fornire il corretto indirizzo IP e il numero di porta del server remoto:

Figura 4. Configuratione completata

Non ci resta che fare click sul pulsante debug e aprire il browser per richiamare l'indirizzo Web della servlet presente nel progetto demo. Dovremmo avere come risposta l'entrata in debug dell'IDE fermo al primo breakpoint da noi inserito.

Ti consigliamo anche