Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
src Ensure that we always create an array of type MBeanAttributeInfo.
.gitignore smaller surface area for public API, use protocols where appropriate
CONTRIBUTING.md Add CONTRIBUTING.md
README.md Update readme for 0.3.0 release.
epl.html
pom.xml [maven-release-plugin] prepare for next development iteration

README.md

clojure.java.jmx

Produce and consume JMX beans from Clojure.

Releases and Dependency Information

Latest stable release: 0.2.0

Leiningen dependency information:

[org.clojure/java.jmx "0.3.0"]

Maven dependency information:

<dependency>
  <groupId>org.clojure</groupId>
  <artifactId>java.jmx</artifactId>
  <version>0.2.0</version>
</dependency>

Usage

Full Documentation

(require '[clojure.java.jmx :as jmx])

What beans do I have?

(jmx/mbean-names "*:*")
-> #<HashSet [java.lang:type=MemoryPool,name=CMS Old Gen,
              java.lang:type=Memory, ...]

What attributes does a bean have?

(jmx/attribute-names "java.lang:type=Memory")
-> (:Verbose :ObjectPendingFinalizationCount
    :HeapMemoryUsage :NonHeapMemoryUsage)

What is the value of an attribute?

(jmx/read "java.lang:type=Memory" :ObjectPendingFinalizationCount)
-> 0

Give me all the attributes:

(jmx/mbean "java.lang:type=Memory")
-> {:NonHeapMemoryUsage
     {:used 16674024, :max 138412032, :init 24317952, :committed 24317952},
    :HeapMemoryUsage
     {:used 18619064, :max 85393408, :init 0, :committed 83230720},
    :ObjectPendingFinalizationCount 0,
    :Verbose false}

Find an invoke an operation:

(jmx/operation-names "java.lang:type=Memory")
-> (:gc)
(jmx/invoke "java.lang:type=Memory" :gc)
-> nil

Conneting to another process? Just run any of the above code inside a with-connection:

(jmx/with-connection {:host "localhost", :port 3000}
  (jmx/mbean "java.lang:type=Memory"))
-> {:ObjectPendingFinalizationCount 0,
    :HeapMemoryUsage ... etc.}

Serve your own beans. Drop a Clojure ref into create-bean to expose read-only attributes for every key/value pair in the ref:

(jmx/register-mbean
  (jmx/create-bean
  (ref {:string-attribute "a-string"}))
  "my.namespace:name=Value")}

Developer Information

Building

  1. Clone the repo
  2. Make sure you have maven installed
  3. Run the maven build: mvn install will produce a JAR file in the target directory, and run all tests with the most recently-released build of Clojure.

License

Copyright © Stuart Halloway

Licensed under the EPL. (See the file epl.html.)

Something went wrong with that request. Please try again.