2009-02-02 5 views
21

Sono in esecuzione tomcat 6.0.18 come servizio Windows. Nell'applet del servizio jvm è configurato come predefinito, ovvero utilizza jvm.dll di JRE.Impossibile utilizzare JConsole con Tomcat in esecuzione come servizio Windows

Sto provando a monitorare questa applicazione con JConsole ma non riesco a collegarmi localmente. Ho aggiunto il parametro -Dcom.sun.management.jmxremote (che funziona all'avvio di tomcat con lo script start.bat). Ma il jvm non sembra prendere il parametro.

risposta

29

C'è una bella GUI per modificare le opzioni, non c'è bisogno di muck intorno al registro.

Aprire C: \ Programmi \ Apache Software Foundation \ Tomcat 6.0 \ bin \ tomcat6.exe (o fare doppio clic sull'icona del monitor nella barra delle applicazioni). Passare al riquadro Java, aggiungere quanto segue all'elenco di argomenti e riavviare Tomcat.

 
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=8086 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 

Quindi è possibile connettersi con JConsole o VisualVM più recente.

+0

Con questa configurazione sono in grado di connettersi al processo come processo remoto su 'localhost: 8086' (non è necessario inserire nome utente e password) – Edd

+0

Solo una nota: il pannello di configurazione' tomcat6.exe' è ora disponibile chiamato 'Tomcat7w.exe' –

3

Ecco il modo prescritto per cambiare jvmoptions & interagire con il servizio:

http://tomcat.apache.org/tomcat-5.5-doc/windows-service-howto.html

vorrei provare ad andare nel vostro Registro di sistema HKLM/Software/Apache Software Foundation/Procrun 2.0 // Parametri/Java e modificare direttamente il valore multistringa "Opzioni".

+1

Se su 64 bit, HKLM \ SOFTWARE \ Wow6432Node \ Apache Software Foundation \ Procrun 2.0 \ \ Java – TJR

1

Se Tomcat è in esecuzione come servizio Windows e si desidera collegarsi a JVM in locale, è necessario eseguire VisualVM o JConsole come account di sistema. È possibile utilizzare Sysinternals PsExec.exe per ottenere ciò.

psexec.exe -i -s c:\visualvm\bin\visualvm.exe 
+2

Questo non sembra funzionare. D: \ Packages \ Java \ jdk1.6.0_25 \ bin> psexec -i -s jvisualvm.exe PsExec v1.98 - Esegui processi in remoto Copyright (C) 2001-2010 Mark Russinovich Sysinternals - www.sysinternals.com jvisualvm.exe è terminato su MACHINENAME01 con il codice di errore -1073741819. – Chloe

1

Aggiungere il seguente nei pressi della parte superiore del vostro catalina.bat

set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote^
    -Dcom.sun.management.jmxremote.port=8086^
    -Dcom.sun.management.jmxremote.ssl=false^
    -Dcom.sun.management.jmxremote.authenticate=false 

arresto e Tomcat riavvio (ovviamente)

Eseguire jconsole.exe. Se il tuo tomcat è in esecuzione come servizio, esegui jconsole.exe come amministratore.

Selezionare Remote Process e immettere localhost: 8086

+0

Ho aggiunto questi parametri nel file setEnv nella directory tomcat7, funziona come un incantesimo. –

2

c'è ancora un modo piuttosto semplice da collegare JConsole al processo Java avviato come servizio di Windows utilizzando la modalità locale che ho scoperto here.

In sostanza si dice che per la connessione al processo Java lanciato come servizio di Windows è necessario avviare JConsole come servizio di Windows (è possibile farlo utilizzando API di Windows nativo o utilizzando qualsiasi involucro come yajsw.)

A proposito, questo ti libererà dal riavvio del processo Java, che per me è stato fondamentale.