blob: 2b8e0ab0db0ff04150736ba4b442c059a33467fa [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright (c) 2009, 2010, 2011, Oracle and/or its affiliates. All rights reserved.
-->
<html>
<head>
<title>Getting Started with JMX Monitoring in NetBeans IDE</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<meta name="description" content="Getting Started with JMX module">
<link rel="stylesheet" href="../../../netbeans.css">
<meta name="author" content="Jean-Francois Denise">
<meta name="author" content="Joel FERAUD">
<meta name="KEYWORDS" content="NETBEANS, TUTORIAL, GUIDE, USER, DOCUMENTATION, JMX">
<meta name="description" content="An introductory guide to using JMX technology in NetBeans IDE"/>
</head>
<body>
<h1>Getting Started with JMX Monitoring in NetBeans IDE</h1>
<p>The NetBeans JMX Module integrates JMX technology right into your workflow
in the NetBeans IDE. This module allows you to quickly develop management applications,
add management to existing applications, develop manager applications, and
monitor the state of the Virtual Machine. </p>
<p>This document has been updated for the JMX Wizard module version 3.0,
for NetBeans IDE 6.5 and newer, and running on top of
JDK 6 or JDK 7. You can download the JMX module from the Update Center.</p>
<p class="note"> <b>Note:</b>
This document is a short and quick introduction to the JMX module for NetBeans IDE.
For more detailed information, complete the JMX Module Tutorial
<a href="jmx-tutorial.html">Adding JMX Instrumentation to a Java Application</a>.</p>
<p>This getting started document gives you an overview of the JMX module features:</p>
<img src="../../../images_www/articles/73/netbeans-stamp-80-74-73.png" class="stamp" alt="Content on this page applies to NetBeans IDE 7.2, 7.3, 7.4 and 8.0" title="Content on this page applies to the NetBeans IDE 7.2, 7.3, 7.4 and 8.0" >
<ul>
<li>Wizards to create JMX MBeans and Managers.</li>
<li>Actions to update exisiting MBeans by adding attributes and operations,
implementing the <tt>MBeanRegistration</tt> interface, or implementing
the <tt>NotificationEmitter</tt> interface.</li>
<li>MBean generation from an existing Java Class.</li>
<li>Action to register MBeans into the Java Platform MBean Server.</li>
<li>Ability to launch the Java Platform management console (JConsole).</li>
<li>Ability to Run and Debug your application using
JConsole.</li>
<li>Sample application based on the Anagram game that shows you how to
add JMX power to your application.</li>
<li>Wizard to generate a management properties file, that
allows you to launch a secure manageable JVM.</li>
<li>Online help.
<li>Tutorials accessible from the <a href="../../index.html">netbeans.org</a> site.</li>
</ul>
<h3>Prerequisites</h3>
<p>This tutorial assumes you have some basic knowledge of, or programming experience
with, the following technologies. </p>
<ul>
<li>JMX technology:
<a href="http://download.oracle.com/javase/6/docs/technotes/guides/jmx/index.html">
JMX online documentation</a>
</li>
<li>Java technology:
<a href="http://www.oracle.com/technetwork/java/javase/tech/index.html">
Java SE Technologies at a Glance</a>
</li>
<li>NetBeans IDE</li>
</ul>
<p>You will also benefit from having some knowledge on
<a href="http://download.oracle.com/javase/6/docs/technotes/guides/management/index.html">
Monitoring and Management for the Java Platform</a></p>
<h3>Software Needed for the Tutorial</h3>
<p>For this tutorial you need to have the following software installed on your computer:</p>
<table>
<tbody>
<tr>
<th class="tblheader" scope="col">Software or Resource</th>
<th class="tblheader" scope="col">Version Required</th>
</tr>
<tr>
<td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">NetBeans IDE</a></td>
<td class="tbltd1">7.2, 7.3, 7.4, 8.0, Java bundle</td>
</tr>
<tr>
<td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java Development Kit (JDK)</a></td>
<td class="tbltd1">version 7 or 8</td>
</tr>
<tr>
<td class="tbltd1">JMX plugin</td>
<td class="tbltd1">Available from NetBeans Update Center</td>
</tr>
<tr>
<td class="tbltd1">JConsole plugin</td>
<td class="tbltd1">Available from NetBeans Update Center</td>
</tr>
</tbody>
</table>
<p>To install the <strong>JMX</strong> and <strong>JConsole</strong> plugins, choose Tools &gt; Plugins and download the modules from the NetBeans Update Center.</p>
<h2>Accessing the JMX Wizards</h2>
<p>After you have installed the JMX plugin and your project is open, you can access the JMX wizard by choose File &gt; New File (Ctrl-N) and selecting the JMX category.
You can then choose among the following:</p>
<ul>
<li><b>Management Configuration File.</b> A standard Java properties file to
store your configuration for your JMX management, in particular for remote
connection and security.</li>
<li><b>Several types of JMX MBeans.</b> An MBean can represent a device, an application, or any
resource that needs to be managed. MBeans expose a management interface: a
set of readable and/or writable attributes and a set of invokable operations,
along with a self-description. The management interface does not change throughout
the life of an MBean instance. MBeans can also emit notifications when certain
defined events occur. JMX MBeans need to be registered into an MBean Server.</li>
<li><b>JMX Manager.</b> A JMX Manager is any application that connects to a
remote JMX MBean Server.<br/>
<img src="../../../images_www/articles/74/java/jmx/jmx-newfile.png"
alt="screenshot of JMX New File Wizards" title="New File Wizards in JMX category"
class="margin-around b-all" /></li>
</ul>
<h2>Updating MBeans</h2>
<p>You can add attributes and operations to your MBeans with the JMX contextual
menu actions, which will popup a dialog box.
You can also have your MBeans implement the <tt>NotificationEmitter</tt> interface.</p>
<p>To update an MBean, either select the MBean class Java file in the Project tree and access
the JMX popup menu by right-clicking on the node,
or simply right-click in the editor's window where your MBean class Java file
is opened and access the JMX popup menu.</p>
<p>These actions are demonstrated in
Exercise 3 of the <a href="jmx-tutorial.html#Exercise_3">
Adding JMX Instrumentation to a Java Application</a> tutorial.</p>
<h2>Registering MBeans</h2>
<p>To remotely connect to your MBeans and manage your application, your MBeans
need to be registered into an MBean Server.</p>
<p>An MBean Server is the main central piece of the JMX technology. It keeps reference
of all MBean registered into it, can send notifications of new MBean registration or
deletion, and can accept remote connections to expose attributes and operations
of its registered MBeans. If you are not familiar with MBean Server role,
read the <tt>
<a href="http://download.oracle.com/javase/6/docs/api/javax/management/MBeanServer.html">
javax.management.MBeanServer</a></tt> API documentation.</p>
<p>Starting with JDK 5, the Java Platform provides a default
MBean Server, called the Platform MBean Server.
It enables you to monitor the JVM, but you can also use it to register your own MBeans into it.
For details on the Java Platform MBean Server, read the <tt>
<a href="http://download.oracle.com/javase/6/docs/api/java/lang/management/ManagementFactory.html">
java.lang.management.ManagementFactory
</a></tt> API documentation.</p>
<p>Depending on its logic, determine where in your application code you want
your MBeans to be registered, typically in the initialization phase of your Main
class. Right-Click in your editor's window at the location where you want the
MBean's registration code to be generated,
select the JMX submenu and then the
&quot;Generate MBean Registration...&quot; action.</p>
<p>This action is demonstrated in
Exercise 5 of the <a href="jmx-tutorial.html#Exercise_5">
Adding JMX Instrumentation to a Java Application</a> tutorial.</p>
<h2>Implementing and Executing Manageable Applications</h2>
<p>JConsole is a JMX-compliant graphical tool for monitoring a Java virtual machine.
JConsole can monitor both local and remote JVMs and can be used to monitor and
manage JMX applications.</p>
<p>Typically, the work flow of implementing and executing manageable applications
is as follows:</p>
<ol>
<li>Generate your MBeans. </li>
<li>Add implementation to your MBeans </li>
<li>Generate MBean's registration code.</li>
<li>Run or debug your project with JConsole.</li>
</ol>
<p>After you install the JMX and JConsole plugins you will see that the following buttons are added to the toolbar.
The actions are also accessible under the Debug menu item in the main menu.</p>
<table>
<tbody>
<tr>
<th class="tblheader" scope="col">Button</th>
<th class="tblheader" scope="col">Description</th>
</tr>
<tr>
<td class="tbltd1"><img alt="Run Main Project with Monitoring and Management button in the toolbar"
title="Run Main Project with Monitoring and Management button"
src="../../../images_www/articles/74/java/jmx/run-project24.png" class="margin-around" /></td>
<td class="tbltd1">Run Main Project with Monitoring and Management</td>
</tr>
<tr>
<td class="tbltd1"><img alt="Debug Main Project with Monitoring and Management button in the toolbar"
title="Debug Main Project with Monitoring and Management button"
src="../../../images_www/articles/74/java/jmx/debug-project24.png" class="margin-around" /></td>
<td class="tbltd1">Debug Main Project with Monitoring and Management</td>
</tr>
<tr>
<td class="tbltd1"><img alt="Start JConsole Management Console button in the toolbar"
title="Start JConsole Management Console button"
src="../../../images_www/articles/74/java/jmx/console24.png" class="margin-around" /></td>
<td class="tbltd1">Start JConsole Management Console</td>
</tr>
</tbody>
</table>
<p class="notes"><strong>Note.</strong> JConsole is part of the Java Platform and can be used independently from the IDE.
For details, refer to the following resources.</p>
<ul>
<li><a href="http://download.oracle.com/javase/6/docs/technotes/tools/share/jconsole.html"><tt>jconsole</tt> man page</a></li>
<li><a href="http://download.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html">Using JConsole document</a></li>
</ul>
<h2>Running the Sample Application</h2>
<p>The JMX module includes a sample application with JMX monitoring built into it.</p>
<ol>
<li>Choose File &gt; New Project.</li>
<li>In Samples, select the JMX category.</li>
<li>Select the Anagram Game Managed with JMX project. <br/>
<img
alt="screenshot of Anagram Game Managed with JMX project in New Project wizard" title="Anagram Game Managed with JMX in New Project wizard"
src="../../../images_www/articles/74/java/jmx/jmx-newproject.png"
class="margin-around b-all" width="600" />
</li>
<li>Click Next. There is no need to change the supplied default project name or
location values. Confirm that the Set as Main Project checkbox is selected. Click Finish.
<p class="notes"><strong>Notes.</strong> The IDE might prompt you to install the JUnit libraries if you did not install
the JUnit plugin previously. You can click Resolve in the Resolve Resource Problems dialog box to
launch the Installer to install the JUnit plugin. Alternatively, you can install the JUnit plugin
in the Plugins manager.</p>
</li>
<li>Once your project is created, and set as the Main Project,
Run it with JConsole by clicking the
&quot;Run Main Project with Monitoring and Management&quot; JConsole button.
<p class="notes"><strong>Notes.</strong> You might see a Connection Failed warning in the
Java Monitoring &amp; Management Console when the console attempts to connect to the Anagram Game process.
For this tutorial you can click Insecure when you are prompted to authorize the connection.</p>
<p>Clicking this button launches and displays the Anagram Game:</p>
<img alt="Anagram Game" title="Anagram Game"
src="../../../images_www/articles/74/java/jmx/jmx-anagram.png"
class="margin-around b-all" />
<p>The JConsole window is also displayed.</p>
</li>
<li>In the JConsole window, select the MBeans tab and in the tree layout
on the left open down all nodes under <tt>anagrams.toy.com</tt>
as shown below.<br/>
<img
alt="screenshot of JConsole window" title="JConsole window"
src="../../../images_www/articles/74/java/jmx/jmx-jconsole1.png"
class="margin-around b-all" />
</li>
<li>Select the Notifications node and click on the Subscribe button at the
bottom so that JConsole will receive a new notification each time an anagram is solved.</li>
<li>Now go to the Anagrams Game window, and solve the first three or four anagrams
(The answers are in the WordLibrary class, but here they are:
abstraction, ambiguous, arithmetic, backslash, ...)</li>
<li>Go back to JConsole, and notice that it received the four notifications.</li>
<li>Click on the Attributes node and notice the attributes values are updated: <br/>
<img
alt="screenshot of JConsole window showing updated values" title="JConsole window showing updated values"
src="../../../images_www/articles/74/java/jmx/jmx-jconsole2.png"
class="margin-around b-all" width="600" /></li>
</ol>
<div class="feedback-box">
<a href="/about/contact_form.html?to=3&amp;subject=Feedback:%20Getting%20Started%20with%20JMX%20Monitoring">Send Feedback on This Tutorial</a></div>
<br style="clear:both;">
<h2>See Also</h2>
<p>This document was a short and quick introduction to the JMX module for NetBeans IDE.
For more detailed information, see the following JMX module tutorial:</p>
<ul>
<li><a href="jmx-tutorial.html">Adding JMX Instrumentation to a Java Application</a></li>
</ul>
</body>
</html>