///////////////////////////////////////////////////////////////
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
///////////////////////////////////////////////////////////////

[[library-jmx, JMX Library]]
= JMX =

[devstatus]
--------------
source=libraries/jmx/dev-status.xml
--------------

The JMX library provides a service that exposes a Zest™ app in
JMX automatically, giving you an opportunity to inspect the app much as
you would with the <<tools-envisage>> tool.

include::../../build/docs/buildinfo/artifact.txt[]

== Usage ==

[snippet,java]
----
source=libraries/jmx/src/test/java/org/qi4j/library/jmx/JMXTest.java
tag=assembly
----

Note that you need to run it with -Dcom.sun.management.jmxremote so that the
JVM starts the MBeanServer.

image:library-jmx.png[]
