sse-jmx
The aim of this library is to make working with JMX in Scala simpler.
Usage
Exporting your Scala objects to JMX
You can export any Scala object as ModelMBean
by using the MBeanExporter
class. The MBeanExporter
uses a configured MBeanInfoAssembler
(by default AnnotationMBeanInfoAssembler
to create an MBean model using reflection from the object's class. The library ships with two implementations of the MBeanInfoAssembler
trait, AnnotationMBeanInfoAssembler
and SimpleMBeanInfoAssembler
.
SimpleMBeanInfoAssembler
will generate a model with an operation for every method that takes no arguments and returns Unit, an attribute for every var and a read-only attribute for every method that takes no arguments and returns non-Unit value (usually a val).
AnnotationMBeanInfoAssembler
maps Scala elements annotated with the @Managed
annotation to MBean operations and attributes. Annotated defs become operations, annotated vars become attributes and annotated vals become read-only attributes.
The ObjectName
of an exported object is determined by a configured ObjectNamingStratety
or it is specified explicitly. The name can be explicitly specified when the object is registered or using the @ManagedResource
annotation.
In the below example code we have a Cache
class that is annotated with the @Managed
annotation and exported using an MBeanExporter
with the default configuration.
class Cache {
@Managed(readOnly=true)
var size: Int
@Mavaged
def evict(key: String) { /* ... */ }
// the cache implementation...
}
class MyApplication {
val myCache = new Cache
val exporter = new MBeanExporter
exporter.export(myCache)
}
Maven
<dependency>
<groupId>com.tzavellas</groupId>
<artifactId>sse-jmx</artifactId>
<version>0.4.2</version>
</dependency>
License
Licensed under the Apache License, Version 2.0. See the LICENSE and NOTICE files for more information.