Я пытаюсь вызвать несколько удаленных операций JMX, используя то же соединение из clojure. Я используюclojure/jmx with-connection потеряет соединение
[org.clojure/java.jmx "0.3.3"]
Однако я обнаружил, что соединение с нетерпением заменено локальным соединением JMX. В качестве иллюстрации:
Дано:
(ns test.core
(:require
[clojure.java.jmx :as jmx]))
Если у меня есть что-то вроде:
(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*)
)
Calling
(caller [1] "host" 8000)
я получаю:
#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]]
Таким образом, удаленное соединение сохраняется только для первого оператора, который обращается к соединению, прежде чем устанавливать его обратно на локальный сервер. Как сохранить удаленное соединение?
если пробег! не существует, потому что вы используете более старую версию clojure, заверните ее в 'dorun' –