Vous devez configurer un connecteur JMX. Voici un extrait de code qui obtiendra l'utilisation de la mémoire de tas engagée sur une machine distante.
String host ="myHost";
int port = 1234;
HashMap map = new HashMap();
String[] credentials = new String[2];
credentials[0] = user;
credentials[1] = password;
map.put("jmx.remote.credentials", credentials);
JMXConnector c = JMXConnectorFactory.newJMXConnector(createConnectionURL(host, port), map);
c.connect();
Object o = c.getMBeanServerConnection().getAttribute(new ObjectName("java.lang:type=Memory"), "HeapMemoryUsage");
CompositeData cd = (CompositeData) o;
System.out.println(cd.get("committed"));
private static JMXServiceURL createConnectionURL(String host, int port) throws MalformedURLException
{
return new JMXServiceURL("rmi", "", 0, "/jndi/rmi://" + host + ":" + port + "/jmxrmi");
}
Si vous ne vous souciez pas de la sécurité, vous pouvez définir la carte sur null. Vous devez démarrer le serveur distant avec;
-Dcom.sun.management.jmxremote.port=1234
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
Vous pouvez jeter un oeil à wlshell qui est un petit utilitaire qui vous permet d'accéder à MBeans sur un serveur distant en utilisant une interface de texte ou d'un script, il peut être utilisé avec WebLogic, mais cela fonctionne pour n'importe quel programme Java où vous avez activé la surveillance à distance.
Comment connaissons-nous l'utilisateur et le mot de passe ou comment pouvons-nous le définir. En utilisant un fichier de propriétés? –
'MemoryUsage memuse = MemoryUsage.from ((CompositeData) o);' –