Bonjour,

Je souhaite accéder à des url Remote JMX via la JVisualVM.
J'ai une machine physique fedora32bits et une machine virtuelle fedora 32bits
Pour pouvoir se connecter en Remote via JMX il faut activer jstatd (remote object registry). Ce dernier est un démon qui surveille la création et la destruction des JVM et fourni une interface qui permet à des outils distants de se connecter aux JVM qui exécutent sur la machine.

A partir de la doc suivante:
http://www.herongyang.com/Java-Tools

J'ai effectué sur l'hôte virtuelle les opérations suivantes sur l'hôte virtuelle:
1) Creation d'un fichier policy jstatd.all.policy pour avoir les permissions
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
[root@localhost ~]# more /usr/lib/jvm/java/bin/jstatd.all.policy 
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
[root@localhost ~]#
2) Mise en place d'un registre RMI en passant en paramètre le port 2020 pour disposer d'un port libre (le port par defaut est déja pris par mes serveurs d'applications):
3) Lancer jstatd via la commande jstatd -J-Djava.security.policy=/usr/lib/jvm/java/bin/jstatd.all.policy -p 2020 &

4) Je lance la commande jps qui affiche la liste des identifiant de chaque JVM lancé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 *[jc@localhost ~]$ 
[jc@localhost ~]$ jps -l -m -v rmi://localhost:2020
3136 sun.tools.jps.Jps -l -m -v rmi://localhost:2020 -Dapplication.home=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0 -Xms8m
3096 GarbageCollection -Xms24m -Xmx24m
3047 sun.tools.jstatd.Jstatd -p 2020 -Dapplication.home=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0 -Xms8m -Djava.security.policy=/usr/lib/jvm/java/bin/jstatd.all.policy
[jc@localhost ~]$
Par la suite je lance la commande depuis ma machine hôte virtuelle jstat sur du RMI. J'obtiens bien des réponses satifaisante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
*[jc@localhost ~]$ 
[jc@localhost ~]$ jstat -gcutil -t rmi://3096@192.168.122.116:2020 1s 30
Timestamp         S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
          283,3   0,00   0,00  64,49  98,81  15,63    446    0,065   444   11,867   11,932
          284,2   0,00   0,00  16,12  98,81  15,63    448    0,065   446   11,925   11,990
          285,3   0,00   0,00  64,66  98,81  15,63    449    0,065   447   11,950   12,016
          286,3   0,00   0,00  32,24  98,81  15,63    451    0,065   449   12,020   12,085
          287,3   0,00   0,00  80,77  98,81  15,63    452    0,066   450   12,047   12,113
          288,3   0,00   0,00  48,36  98,81  15,63    454    0,066   452   12,122   12,188
          289,3   0,00   0,00  96,75  98,81  15,63    455    0,066   453   12,150   12,216
          290,3   0,00   0,00  64,65  98,81  15,63    457    0,066   455   12,212   12,277
^C[jc@localhost ~]$
J'ouvre ensuite les ports suivants (2020, 53580, 38066) sur ma machine hôte virtuelle:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
[root@localhost jc]# netstat -nap | grep jstatd
tcp        0      0 :::2020                     :::*                        LISTEN      2080/jstatd         
tcp        0      0 :::53580                    :::*                        LISTEN      2080/jstatd         
tcp        0      0 :::38066                    :::*                        LISTEN      3047/jstatd         
[root@localhost jc]#
Et je relance la commande jstat en remote (cette fois ci depuis ma machine physique):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
[jc@localhost ~]$ jstat -gcutil -t rmi://3096@192.168.122.116:2020 1s 30
Remote Exception attaching to rmi://3096@192.168.122.116:2020
[jc@localhost ~]$
Avec la commande jsp en remote j'ai ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
[jc@localhost ~]$ jps -l -m -v rmi://192.168.122.116:2020
Error communicating with remote host: Connection refused to host: 127.0.0.1; nested exception is: 
	java.net.ConnectException: Connection refused
[jc@localhost ~]$
Merci d'avance pour votre aide,