İpucu

Java'da JMX ile Connection Kurulması

Java'da JMX desteği olan bir uygulamaya Java kodu ile bağlanılbilir. Bunun için javax.management.remote paketi kullanılır. Aşağıda bir JMX desteği olan uygulamaya connection kuran örnek görülmektedir :
import java.io.IOException;
import java.net.MalformedURLException;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
public class JMXClientTestApp {
	
    public static final String JMX_URL_HEADER = "service:jmx:rmi:///jndi/rmi://";
    public static final String JMX_URL_PATH = "/jmxrmi";
	
	public static void main(String[] args) 
			throws MalformedURLException, IOException {
						
		String url=JMX_URL_HEADER + "localhost:9999" + JMX_URL_PATH;
			
		JMXConnector connector = JMXConnectorFactory.connect(new JMXServiceURL(url));
		
		System.out.println("Connected..." + connector.getConnectionId());
	}
}
JMX URL service:jmx:rmi:///jndi/rmi://ip:port//jmxrmi şeklinde verilmektedir. Ekranda connected yazısı görülürse başarılı bağlantı kurulmuş demektir :
connected...rmi://10.1.35.12  1
10.1.35.12, local IP'dir.
Kullanıcı ve şifre kontrolü olan bir JMX uygulamasına da Java ile erişilebilir. Kod kısmı şu şekilde olur :
public class JMXClientTestApp {
	
    public static final String JMX_URL_HEADER = "service:jmx:rmi:///jndi/rmi://";
    public static final String JMX_URL_PATH = "/jmxrmi";
	
	public static void main(String[] args) 
			throws MalformedURLException, IOException {
		
		Map<String, Object> env = new HashMap<>();
		env.put(JMXConnector.CREDENTIALS, new String[] { "admin", "Admin123." });
						
		String url=JMX_URL_HEADER + "localhost:9999" + JMX_URL_PATH;
			
		JMXConnector connector = JMXConnectorFactory.connect(new JMXServiceURL(url), env);
		
		System.out.println("Connected..." + connector.getConnectionId());
	}
}
Görüldüğü gibi kullanıcı adı ve şifrenin verildiği bir Map yaratılıp connect() yöntemine aktarılmaktadır. Uygulama auth desteği ise şu şekilde eklenmiştir :
-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
Eğer uygulama SSL desteği ekli ise client çağırırken sertifika bilgisini göndermesi gerekir. Client açılırken şu paramterleleri vermelidir :
-Djavax.net.ssl.trustStore=Q:\testjmx.jks -Djavax.net.ssl.trustStorePassword=trustpassword
Bu iki parametre clietn uygulaması açılırken verilebilir. Bağlanma kodu şe şekilde olur :
public class JMXClientTestApp {
	
    public static final String JMX_URL_HEADER = "service:jmx:rmi:///jndi/rmi://";
    public static final String JMX_URL_PATH = "/jmxrmi";
	
	public static void main(String[] args) 
			throws MalformedURLException, IOException {
		
		Map<String, Object> env = new HashMap<>();
		env.put(JMXConnector.CREDENTIALS, new String[] { "admin", "Admin123." });
		env.put("com.sun.jndi.rmi.factory.socket", new SslRMIClientSocketFactory());
						
		String url=JMX_URL_HEADER + "localhost:9999" + JMX_URL_PATH;
			
		JMXConnector connector = JMXConnectorFactory.connect(new JMXServiceURL(url), env);
		
		System.out.println("Connected with SSL" + connector.getConnectionId());
	}
}

Map'e com.sun.jndi.rmi.factory.socket değerinin eklenmesi yeterlidir. Bu SSL ile konuşulacağını göstermektedir.
zafer.teker , 24.04.2025

Bu Sayfayı Paylaş:

Fibiler Üyelerinin Yorumları


Tüm üyeler içeriklere yorum ekleyerek katkıda bulunabilir : Yorum Gir



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir