Bir uygulamayı JConsole gibi araçlarla erişebilecek şekide JMX desteği eklenebilir. Bu sayfada bu desteğin nasıl ekleneceği görülebilir :
www.fibiler.com/Bir-Java-Uygulamasini-JConsole-ile-Erisilebilir-Yapilmasi_Ipucu_148134Ancak bu durumda herkes JConsole ile uygulamanıza erişlebilir. Bunu engellemek için basit bir username, password kontrolü eklenebilir. Bunun için iki dosya yaratırlması gerekir. Örneğin şifre bilgisinin saklandığı dosya içeriği aşağıdaki gibi olsun :
admin Admin123.
Bu dosyayı bir yere jmxremote.password adıyla kaydedelim. Burada admin adlı bir kullanıcı tanımlıyoruz ve şifresi de Admin123. oluyor.
Bu kullanıcının yetkilerini tanımlamak içinse aşağıdaki gibi bir dosya yaratalım :
admin readwrite
Bu kullanıcıya read (okuma) ve write (yazma) yetkisi verildi.
Bu dosyaları uygulamanız çalıştırırken aşağıdaki gibi vermeniz gerekir :
-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=E:\jmxremote.password -Dcom.sun.management.jmxremote.access.file=E:\jmxremote.access -Dcom.sun.management.jmxremote.ssl=false
Görüldüğü gibi -Dcom.sun.management.jmxremote.authenticate değeri true olarak verilmiş ve username/şifre dosyası ile role tanımının yapıldığı dosya verilmiştir. Bu uygulamayı çalıştırdığınızda aşağıdaki hatayı alabilirsiniz:
Error: Password file read access must be restricted: Q:\jmx.password
sun.management.AgentConfigurationError
at sun.management.jmxremote.ConnectorBootstrap.checkPasswordFile(Unknown Source)
at sun.management.jmxremote.ConnectorBootstrap.startRemoteConnectorServer(Unknown Source)
at sun.management.Agent.startAgent(Unknown Source)
at sun.management.Agent.startAgent(Unknown Source)
Bu hata dosyaların yetkilerinin düzenlenmediği anlamına gelir. Yani jmx.password ve jmxremote.password dosyası Java uygulamasını çalıştıran uygulamlara okuma yetkisi verilmeli. Diğer tüm kullanıcılardan da yetkisi kaldırılmalıdır. Linux'da chmod 600
şeklinde bir dosyada sadece kullanıcıya rw yetkisi verilmesi sağlanabilir. Windows'da da Securty tabından yetkiler düzenlenebilir.
Bu işlemi yaptıktan sonra localhost:9999 sunucusuna bağlanırken username ve password girmeniz gerekir.