Bunun için bir çözümüm var:
Senin Eğer Java işlemi bir güvenlik duvarının arkasında Linux üzerinde çalışan ve başlatmak istediğiniz JConsole / Java VisualVM / Java Görev Kontrol bağlamak için yerel makinenizde Windows üzerinde Java sürecinin JMX Limanı .
Linux makinenize SSH oturum açma yoluyla erişmeniz gerekir. Tüm İletişim SSH bağlantısı üzerinden tünel haline getirilecektir.
İPUCU: Bu Çözüm, bir güvenlik duvarı olup olmadığına bakılmaksızın çalışır.
Dezavantaj: Java işleminizi her yeniden başlattığınızda , 4 - 9 arasındaki tüm adımları tekrar yapmanız gerekecektir.
1. Windows makineniz için macun paketine buradan ihtiyacınız var:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
En azından putty.exe
2. Linux makinenizde boş bir Bağlantı Noktası tanımlayın:
<jmx-remote-port>
Misal:
jmx-remote-port = 15666
3. Linux makinesinde java işlemine argümanlar ekleyin
Bu tam olarak böyle yapılmalıdır. Aşağıdaki gibi yapılırsa, güvenlik duvarlarının arkasındaki linux Makineleri için çalışır ( -Djava.rmi.server.hostname=localhost
Argümanın nedeni olarak çalışır ).
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=<jmx-remote-port>
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.local.only=false
-Djava.rmi.server.hostname=localhost
Misal:
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=15666 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=false -Djava.rmi.server.hostname=localhost ch.sushicutta.jmxremote.Main
4. Java İşleminizin İşlem Kimliğini Alın
ps -ef | grep <java-processname>
result ---> <process-id>
Misal:
ps -ef | grep ch.sushicutta.jmxremote.Main
result ---> 24321
5. RMIServer saplamaları indirmesi için rastgele Bağlantı Noktası bulun
Java işlemi, linux makinesinde, RMI Server-Stub'larının indirilebileceği yeni bir TCP Portu açar. Java Sanal Makinesi ile bağlantı kurmak için bu bağlantı noktasının SSH Tüneli aracılığıyla da kullanılabilir olması gerekir.
İle netstat -lp
bu liman da bulunabilir lsof -i
java süreci formu açılmıştır hangi bağlantı noktasını ipuçları verir.
NOT: Bu bağlantı noktası, java işlemi başladığında her zaman değişir.
netstat -lp | grep <process-id>
tcp 0 0 *:<jmx-remote-port> *:* LISTEN 24321/java
tcp 0 0 *:<rmi-server-port> *:* LISTEN 24321/java
result ---> <rmi-server-port>
Misal:
netstat -lp | grep 24321
tcp 0 0 *:15666 *:* LISTEN 24321/java
tcp 0 0 *:37123 *:* LISTEN 24321/java
result ---> 37123
6. Windows makinenizden macun kullanarak iki SSH-Tüneli etkinleştirin
Source port: <jmx-remote-port>
Destination: localhost:<jmx-remote-port>
[x] Local
[x] Auto
Source port: <rmi-server-port>
Destination: localhost:<rmi-server-port>
[x] Local
[x] Auto
Misal:
Source port: 15666
Destination: localhost:15666
[x] Local
[x] Auto
Source port: 37123
Destination: localhost:37123
[x] Local
[x] Auto
7. Bu SSH-Tunnel etkinken Putty ile Linux makinenize giriş yapın.
Macun seansını açık bırakın.
Giriş yaptığınızda Putty, tüm TCP Bağlantılarını SSH port 22 üzerinden linux makinesine tünelleyecektir.
JMX Liman:
Windows machine: localhost:15666 >>> SSH >>> linux machine: localhost:15666
RMIServer-Koçan-Liman:
Windows Machine: localhost:37123 >>> SSH >>> linux machine: localhost:37123
8. Aşağıdaki URL'yi kullanarak Java İşleminize bağlanmak için JConsole / Java VisualVM / Java Mission Control'u başlatın
Bu çalışır, çünkü JConsole / Java VisualVM / Java Mission Control, yerel Windows makinenizdeki bir Bağlantı Noktasına bağlandığınızı düşünür. ancak Putty, tüm yükü 15666 numaralı bağlantı noktasına linux makinenize gönderir.
Linux makinesinde önce java işlemi yanıt verir ve RMIServer Portunu geri gönderir. Bu örnekte 37123.
Sonra JConsole / Java VisualVM / Java Mission Control, localhost: 37123'e bağlandığını düşünür ve putty tüm yükü linux makinesine iletir.
Java Süreci yanıt verir ve bağlantı açılır.
[x] Remote Process:
service:jmx:rmi:///jndi/rmi://localhost:<jndi-remote-port>/jmxrmi
Misal:
[x] Remote Process:
service:jmx:rmi:///jndi/rmi://localhost:15666/jmxrmi
9. KEYFİNİ ÇIKARIN # 8-]