Ich versuche, eine Reihe von Remote-JMX-Operationen mit der gleichen Verbindung von Clojure aufrufen. Ich verwendeclojure/jmx with-connection löscht Verbindung
[org.clojure/java.jmx "0.3.3"]
Allerdings finde ich, dass die Verbindung eifrig mit einer lokalen JMX-Verbindung ersetzt wird. Zur Veranschaulichung:
gegeben:
(ns test.core
(:require
[clojure.java.jmx :as jmx]))
Wenn ich etwas wie:
(defn caller [col host port]
(println jmx/*connection*)
(jmx/with-connection {:host host, :port port :environment
{"jmx.remote.credentials" (into-array String ["tomcat" "tomcat"])}}
(do
(println jmx/*connection*)
(map called col))))
(defn called [line]
(println jmx/*connection*)
)
Aufruf
(caller [1] "host" 8000)
ich:
#object[com.sun.jmx.mbeanserver.JmxMBeanServer 0x2c914364 [email protected]]
#object[javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection 0x2b4bbf01 javax[email protected]2b4bbf01]
#object[com.sun.jmx.mbeanserver.JmxMBeanServer 0x2c914364 [email protected]]
Die Remoteverbindung dauert also nur für die erste Anweisung, die auf die Verbindung zugreift, bevor sie auf den lokalen Server zurückgesetzt wird. Wie behalte ich die Remote-Verbindung?
wenn lauf! existiert nicht, weil Sie eine ältere Version von clojure in eine 'Dorun' einbinden –