<?xml version="1.0" encoding="utf-8"?>
<book fpi="-//Sun::SunSoft//DOCUMENT JVDMKSTART Version 1.0//en" role="unnumbered" label="pre-fcs" id="jvdmkstart" lang="en" userlevel="developer"><title lang="en">Getting Started with the Java Dynamic Management Kit 4.0</title><bookinfo><bookbiblio><title lang="en">Getting Started with the Java Dynamic Management Kit 4.0</title><authorgroup lang="en"><author lang="en"><firstname lang="en">Ana</firstname><surname lang="en">Branson</surname></author></authorgroup><isbn lang="en"/><pubsnumber lang="en"><gentext type="text">Part No: </gentext>806-2983</pubsnumber><pubdate lang="en">December 1999</pubdate><publisher lang="en"><publishername lang="en">Sun Microsystems,
Inc.</publishername><address lang="en"><street lang="en">901 San Antonio Road</street><city lang="en">Palo Alto<gentext type="text">, </gentext></city><state lang="en">CA<gentext type="text"></gentext></state><postcode lang="en">94303-4900</postcode><country lang="en">U.S.A.</country></address></publisher><copyright lang="en"><year lang="en">1999</year><holder lang="en">Sun Microsystems</holder></copyright><abstract lang="en"><para lang="en">The <citetitle lang="en">Getting Started with the Java Dynamic Management Kit 4.0</citetitle> Guide presents the the architecture
of the Java Dynamic Management Kit, introducing the key concepts of the product and
the development process. This book is aimed at anyone seeking an introduction
to the components of the Java Dynamic Management Kit. Familiarity with the <trademark class="trade" lang="en">Java</trademark> programming language model is assumed.</para></abstract></bookbiblio><legalnotice lang="en"><para lang="en">This product or document is protected by copyright and distributed
under licenses restricting its use, copying, distribution, and decompilation.
No part of this product or related documentation may be reproduced in any
form by any means without prior written authorization of Sun and its licensors,
if any. Third party software, including font technology, is copyrighted and
licensed from Sun suppliers. Federal Acquisitions: Commercial Software--Government
Users Subject to Standard License Terms and Conditions.</para><para lang="en">Sun, Sun Microsystems, the Sun Logo, 
Java,
Java Dynamic Management, JavaBeans, the Java Coffee Cup logo, docs.sun.com,
AnswerBook, AnswerBook2,
 and Solaris are
trademarks or registered trademarks of Sun Microsystems, Inc in the U.S. and
other countries. UNIX is a registered trademark in the U.S. and other countries,
exclusively licensed through X/Open, Ltd.</para><para lang="en">All SPARC trademarks are used under license and are trademarks or registered
trademarks of SPARC International, Inc. in the U.S. and other countries. Products
bearing SPARC trademarks are based upon an architecture developed by Sun Microsystems,
Inc.</para><para lang="en">DOCUMENTATION IS PROVIDED "AS IS" AND ALL EXPRESS OR IMPLIED CONDITIONS.
REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE DISCLAIMED, EXCEPT
TO THE EXTENT THAT SUCH DISCLAIMERS ARE HELD TO BE LEGALLY INVALID. </para><para lang="fr"/><para lang="en">Ce produit ou document est protégé par un copyright et
distribué avec des licences qui en restreignent l'utilisation, la copie,
la distribution, et la décompilation. Aucune partie de ce produit ou
document ne peut être reproduite sous aucune forme, par quelque moyen
que ce soit, sans l'autorisation préalable et écrite de Sun
et de ses bailleurs de licence, s'il y en a. Le logiciel détenu par
des tiers, et qui comprend la technologie relative aux polices de caractères,
est protégé par un copyright et licencié par des fournisseurs
de Sun.</para><para lang="en">Sun, Sun Microsystems, le logo Sun, 
Java,
Java Dynamic Management, JavaBeans, Java Coffee Cup logo, docs.sun.com, AnswerBook,
AnswerBook2 
 et Solaris sont
des marques de fabrique ou des marques déposées de Sun Microsystems,
Inc. aux Etats-Unis et dans d'autres pays. UNIX est une marque enregistrée
aux Etats-Unis et dans d'autres pays, et exclusivement licenciée par
X/Open Ltd.</para><para lang="en">Toutes les marques SPARC sont utilisées sous licence et sont
des marques de fabrique ou des marques déposées de SPARC International,
Inc. aux  Etats-Unis et dans d'autres pays. Les produits portant les marques
SPARC sont basés sur une architecture développée par
Sun Microsystems, Inc.</para><para lang="en">LA DOCUMENTATION EST FOURNIE "EN L'ETAT" ET TOUTES AUTRES CONDITIONS,
DÉCLARATIONS ET GARANTIES EXPRESSES OU TACITES SONT FORMELLEMENT EXCLUES
DANS LA MESURE AUTORISÉE PAR LA LOI APPLICABLE, Y COMPRIS NOTAMMENT
TOUTE GARANTIE IMPLICITE RELATIVE À LA QUALITÉ MARCHANDE, À
L'APTITUDE À UNE UTILISATION PARTICULIÈRE OU À L'ABSENCE
DE CONTREFAÇON.</para></legalnotice><subjectset lang="en"><subject lang="en"><subjectterm lang="en">Introduction &amp; Overview</subjectterm><subjectterm lang="en">Java</subjectterm><subjectterm lang="en">Network Software</subjectterm><subjectterm lang="en">Programming &amp; Tools</subjectterm></subject></subjectset></bookinfo><preface id="preface-1" lang="en" role="preface"><gentext type="text">Preface</gentext><gentext type="toc">Preface</gentext><title lang="en">Preface</title><highlights lang="en"><para lang="en">The <trademark class="trade" lang="en">Java Dynamic Management</trademark> Kit provides a set
of Java classes and tools for developing management solutions. This product
conforms to the specification of the Java Management extensions (JMX) which
define a three-level architecture: resource instrumentation, dynamic agents
and remote management applications. Such an architecture is applicable to
network management, remote system maintenance, application maintenance and
service provisioning. </para><para lang="en">The <citetitle lang="en">Getting Started with the Java Dynamic Management Kit 4.0</citetitle> Guide presents the architecture
of the Java Dynamic Management Kit, introducing the key concepts of the product and
the development process.</para></highlights><sect1 id="preface-1a" lang="en"><title lang="en">Who Should Use This Book</title><para lang="en">This book is aimed at anyone seeking an introduction to the concepts
and components of the Java Dynamic Management Kit. </para><para lang="en">Familiarity with Java programming and the <trademark class="trade" lang="en">JavaBeans</trademark>
component model is assumed. </para><para lang="en">This book is not intended to be an exhaustive reference: management
tutorials intended to demonstrate each of the management levels and how they
interact are covered in <citetitle lang="en">Java Dynamic Management Kit 4.0 Tutorials</citetitle>, and the complete Javadoc API definitions are provided in the
product documentation package.</para></sect1><sect1 id="preface-2" lang="en"><title lang="en">Before You Read This Book</title><para lang="en">In order to build and run the sample programs in these tutorials, or
use the tool commands, you must have a complete installation of the Java Dynamic Management
on your machine. Please refer to the <citetitle lang="en">Java Dynamic Management Kit 4.0 Installation Guide and Release Notes</citetitle>
document for instructions on how to install the product components and configure
your environment.</para><para lang="en">After familiarizing yourself with the concepts of the Java
Dynamic Management Kit, you should familiarize yourself with the tools provided
with the Java Dynamic Management Kit and learn how to instrument new or existing
resources for management. The following books are part of the product documentation
set:</para><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en"><citetitle lang="en">Java Dynamic Management Kit 4.0 Tools Reference</citetitle></para></listitem><listitem lang="en"><para lang="en"><citetitle lang="en">Java Dynamic Management Kit 4.0 Tutorials</citetitle></para></listitem></itemizedlist><para lang="en">These books are available on-line after you have installed the documentation
package of the Java Dynamic Management. The on-line documentation also includes the
Javadoc API for the Java packages and classes, including those of the Java
Management extensions. Using any web browser, open the home-page corresponding
to your platform:</para><informaltable frame="topbot" lang="en"><tgroup cols="2" colsep="0" rowsep="1" lang="en"><colspec colname="column1" colwidth="88*"/><colspec colname="column2" colwidth="308*"/><thead lang="en"><row lang="en"><entry align="left" valign="bottom" lang="en"><para lang="en">Operating Environment</para></entry><entry align="left" valign="bottom" lang="en"><para lang="en">Home-Page Location</para></entry></row></thead><tbody lang="en"><row rowsep="0" lang="en"><entry align="left" valign="middle" lang="en"><para lang="en">Solaris</para></entry><entry align="left" valign="middle" lang="en"><para lang="en"><replaceable lang="en">installDir</replaceable><filename moreinfo="none" lang="en">/SUNWjdmk/jdmk4.0/<replaceable lang="en">JDKversion</replaceable>/index.html</filename></para></entry></row><row lang="en"><entry align="left" valign="middle" lang="en"><para lang="en">Windows NT</para></entry><entry align="left" valign="middle" lang="en"><para lang="en"><replaceable lang="en">installDir</replaceable><filename moreinfo="none" lang="en">\SUNWjdmk\jdmk4.0\<replaceable lang="en">JDKversion</replaceable>\index.html</filename></para></entry></row></tbody></tgroup></informaltable><para lang="en">In these file names, <replaceable lang="en">installDir</replaceable> refers to
the base directory of your Java Dynamic Management installation. The <replaceable lang="en">JDKversion</replaceable> is that of the Java Development Kit which you use and which
you selected during installation; it can be either <filename moreinfo="none" lang="en">1.1</filename>
or <filename moreinfo="none" lang="en">1.2</filename>. This convention is used throughout this book
whenever referring to files or directories which are part of the installation.
In a default installation procedure, <replaceable lang="en">installDir</replaceable>
is:</para><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en"><filename moreinfo="none" lang="en">/opt</filename> on the Solaris platform</para></listitem><listitem lang="en"><para lang="en"><filename moreinfo="none" lang="en">C:\Program Files </filename>on the
Windows NT platform</para></listitem></itemizedlist></sect1><sect1 id="preface-3" lang="en"><title lang="en">How This Book Is Organized</title><para lang="en">This book explains the key concepts of the Java Dynamic Management Kit, introduces
the main components of the product, provides an overview of the development
process and outlines the tools you need to use the Java Dynamic Management
Kit. It is divided into the following sections:<itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en"><link linkend="intro-12209" lang="en">"What is the Java Dynamic Management Kit
?"</link></para></listitem><listitem lang="en"><para lang="en"><link linkend="intro2-1" lang="en">"The Java Dynamic Management Kit
Development Process"</link></para></listitem></itemizedlist></para></sect1><sect1 id="preface-4" lang="en"><title lang="en">Related Books</title><para lang="en">The Java Dynamic Management Kit relies on the management architecture of the Java
Management extensions. The three specifications documents are provided in
the product documentation package:</para><para lang="en"><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en"><citetitle lang="en">"Java Management Extensions Instrumentation
and Agent Specification"</citetitle> (<filename moreinfo="none" lang="en">jmx_instr_agent.pdf</filename>)</para></listitem><listitem lang="en"><para lang="en"><citetitle lang="en">"Java Management Extensions SNMP
Manager API"</citetitle> (<filename moreinfo="none" lang="en">jmx_snmp_api.pdf</filename>)</para></listitem></itemizedlist></para></sect1><sect1 id="sundocs-1" lang="en"><title lang="en">Ordering Sun Documents</title><para lang="en">Fatbrain.com, an Internet professional bookstore, stocks select product
documentation from Sun Microsystems, Inc.</para><para lang="en">For a list of documents and how to order them, visit the Sun Documentation
Center on Fatbrain.com at <ulink url="http://www1.fatbrain.com/documentation/sun"><literal moreinfo="none" lang="en">http://www1.fatbrain.com/documentation/sun</literal></ulink>.</para></sect1><sect1 id="sundocs-2" lang="en"><title lang="en">Accessing Sun Documentation Online</title><indexterm significance="normal" id="indexterm-1" lang="en"><primary lang="en">Sun Documentation Online</primary></indexterm><para lang="en">The <trademark class="service" lang="en">docs.sun.com</trademark> Web site enables
you to access Sun technical documentation online. You can browse the docs.sun.com
archive or search for a specific book title or subject. The URL is <ulink url="http://docs.sun.com"><literal moreinfo="none" lang="en">http://docs.sun.com</literal></ulink>.</para></sect1><sect1 id="typeconv-1" lang="en"><title lang="en">Typographic Conventions</title><para lang="en">The following table describes the typographic changes used in this book.</para><table frame="all" id="typeconv-tbl-2" lang="en"><gentext type="text">Table P-1 </gentext><title lang="en">Typographic Conventions</title><tgroup cols="3" colsep="1" rowsep="1" lang="en"><colspec colname="colspec0" colwidth="80.00*"/><colspec colname="colspec1" colwidth="161.11*"/><colspec colname="colspec2" colwidth="154.89*"/><thead lang="en"><row lang="en"><entry align="left" valign="top" lang="en"><para lang="en">Typeface or Symbol</para></entry><entry align="left" valign="bottom" lang="en"><para lang="en">Meaning</para></entry><entry align="left" valign="bottom" lang="en"><para lang="en">Example</para></entry></row></thead><tbody lang="en"><row lang="en"><entry colname="colspec0" lang="en"><para lang="en"><emphasis lang="en">AaBbCc123</emphasis></para></entry><entry colname="colspec1" lang="en"><para lang="en">Book titles, new words or terms, or words
to be emphasized</para></entry><entry colname="colspec2" lang="en"><para lang="en">Read Chapter
6 in <citetitle lang="en">User's Guide</citetitle>. </para><para lang="en">These are called <firstterm lang="en">class</firstterm> options. </para><para lang="en">You must be <emphasis lang="en">root</emphasis>
to do this.</para></entry></row><row lang="en"><entry colname="colspec0" lang="en"><classname lang="en">AaBbCc123</classname></entry><entry colname="colspec1" lang="en">Class or object names, methods, parameters or any other element of the Java programming language</entry><entry colname="colspec2" lang="en">Instantiate the <classname lang="en">MyBean</classname> class.</entry></row><row lang="en"><entry align="left" valign="top" lang="en"><para lang="en"><literal moreinfo="none" lang="en">AaBbCc123</literal></para></entry><entry align="left" valign="top" lang="en">The names of commands, files, and directories; on-screen computer output</entry><entry align="left" valign="top" lang="en"><para lang="en">Edit your <filename moreinfo="none" lang="en">.login</filename> file. </para><para lang="en">Use <command moreinfo="none" lang="en">ls <option lang="en"><gentext type="text">-</gentext>a</option> </command>to
list all files. </para><para lang="en"><computeroutput moreinfo="none" lang="en">machine_name% you have mail.</computeroutput></para></entry></row><row lang="en"><entry align="left" valign="top" lang="en"><para lang="en"><userinput moreinfo="none" lang="en">AaBbCc123</userinput></para></entry><entry align="left" valign="top" lang="en">What you type, contrasted with on-screen computer output</entry><entry align="left" valign="top" lang="en"><computeroutput moreinfo="none" lang="en">machine_name%</computeroutput> <userinput moreinfo="none" lang="en">su</userinput>
<computeroutput moreinfo="none" lang="en">Password:</computeroutput></entry></row><row lang="en"><entry align="left" valign="top" lang="en"><para lang="en"><replaceable lang="en">AaBbCc123</replaceable></para></entry><entry align="left" valign="top" lang="en">Command-line placeholder: replace with a real name or value</entry><entry align="left" valign="top" lang="en"><para lang="en">To delete a file, type <userinput moreinfo="none" lang="en">rm</userinput> <replaceable lang="en">filename</replaceable>.</para></entry></row></tbody></tgroup></table></sect1><sect1 id="typeconv-3" lang="en"><title lang="en">Shell Prompts</title><para lang="en">The following table shows the default system prompts for the different
platforms and shells.</para><table frame="all" id="typeconv-tbl-4" lang="en"><gentext type="text">Table P-2 </gentext><title lang="en">Shell Prompts</title><tgroup cols="2" colsep="1" rowsep="1" lang="en"><colspec colname="colspec3" colwidth="198*"/><colspec colname="colspec4" colwidth="198*"/><thead lang="en"><row lang="en"><entry align="left" valign="top" lang="en"><para lang="en">Shell</para></entry><entry align="left" valign="top" lang="en"><para lang="en">Prompt</para></entry></row></thead><tbody lang="en"><row lang="en"><entry align="left" valign="top" lang="en">C shell prompt</entry><entry align="left" valign="top" lang="en"><computeroutput moreinfo="none" lang="en">machine_name%</computeroutput></entry></row><row lang="en"><entry align="left" valign="top" lang="en">C shell superuser prompt</entry><entry align="left" valign="top" lang="en"><computeroutput moreinfo="none" lang="en">machine_name#</computeroutput></entry></row><row lang="en"><entry align="left" valign="top" lang="en">Bourne shell and Korn shell prompt</entry><entry align="left" valign="top" lang="en"><computeroutput moreinfo="none" lang="en">$</computeroutput></entry></row><row lang="en"><entry align="left" valign="top" lang="en">Bourne shell and Korn
shell superuser prompt</entry><entry align="left" valign="top" lang="en"><computeroutput moreinfo="none" lang="en">#</computeroutput></entry></row><row lang="en"><entry colname="colspec3" lang="en">Windows NT system prompt</entry><entry colname="colspec4" lang="en"><computeroutput moreinfo="none" lang="en">C:\</computeroutput></entry></row></tbody></tgroup></table><para lang="en">Unless otherwise noted, the command examples in this book
use the Korn shell prompt.</para></sect1></preface><chapter id="intro-12209" lang="en"><gentext type="text">Chapter 1</gentext><gentext type="toc">1.   What is the Java Dynamic Management Kit ?</gentext><title lang="en"> What is the <trademark class="trade" lang="en">Java Dynamic Management</trademark> Kit ?</title><beginpage lang="en"/><sect1 id="intro-27" lang="en"><title lang="en">Introduction </title><para lang="en">The Java <trademark class="trade" lang="en">Dynamic Management</trademark> Kit is a <trademark class="trade" lang="en">Java</trademark> based solution for building and distributing management intelligence
into system, application, and network devices. It achieves this by providing
a set of Java classes and tools that simplify the development of dynamically
extensible agents.</para><para lang="en">An <indexterm significance="normal" id="indexterm-2" lang="en"><primary lang="en">agent</primary></indexterm>agent is an application
which provides one or more services. Agents act as invisible assistants, alerting
you to potential problems throughout the network or performing management
tasks without human intervention. Agents are smart, autonomous, and dynamic.
They can download management services from the management web server, pulling
new management services as soon as they become available. This allows new
management services to be implemented and started at any time.</para><para lang="en"/><sect2 id="intro-58" lang="en"><title lang="en">How Is It Different?</title><para lang="en">Firstly, network management, under the current paradigm, is performed
by management applications. These <indexterm significance="normal" id="indexterm-3" lang="en"><primary lang="en">management applications</primary></indexterm>management applications are aided by agents. The agents
act as interpreters and filters, sending commands to the network elements
they control and collecting information about them. They are usually situated
near the network elements they control, which means that these agents are
limited in nature, as they contain little management intelligence and can
only perform basic network management operations. </para><para lang="en">Secondly, and from a wider perspective, existing system, application,
and network management systems are implemented with diverse protocols and
technologies. Developers must choose a single  management technology for a
portion of the target market. In some cases, developers may implement multiple
management technologies, in order to provide more complete coverage of their
potential markets.  Frequently, developers choose not to implement any management
technology, in order not to be encumbered in the market.</para><para lang="en">The Java Dynamic Management Kit solves both of these problems. It is
a single suite of products offering a uniform instrumentation for managing
system, application, and network management systems. It is also a key enabling
technology for the <indexterm significance="normal" id="indexterm-4" lang="en"><primary lang="en">service-driven network</primary></indexterm>service-driven
network. The service-driven network is a new approach to the provision of
network computing that concentrates on the services you want to provide. These
services range from the low-level services that manage relationships between
networked devices to the value-added services you provide to end-users. These
services <emphasis lang="en">drive</emphasis> your network. With the Java Dynamic Management
Kit, services are incorporated directly into agents. Agents are granted permission
to perform management tasks themselves, enabling management intelligence to
be distributed throughout the whole network.</para><para lang="en">Thus, the Java Dynamic Management Kit opens the door to new types of
lightweight, flexible management applications that can be created, deployed,
enhanced or deleted in real time.  </para><para lang="en"/></sect2><sect2 id="intro-59" lang="en"><title lang="en">What Other Benefits Does It Offer?</title><para lang="en">The Java Dynamic Management Kit is different in that it offers more
functionality than any other network management product of its kind. This
unique combination of features gives the Java Dynamic Management Kit a wide
domain of application.</para><para lang="en">The Java Dynamic Management Kit supports  management protocols, such as <indexterm significance="normal" id="indexterm-5" lang="en"><primary lang="en">SNMP</primary></indexterm>SNMP. It also uses a dynamic web-based
pull mechanism enabling new services to be downloaded from the Web server
at runtime. Services are not only implemented inside devices, but can also
be network-based, stored as files in very simple Web pages in the same way
as Java technology-based applets. This dynamic, on-demand paradigm means that
it is no longer necessary to know what will need to be configured, managed,
and monitored in the future or in advance of network deployment. <indexterm significance="normal" id="indexterm-6" lang="en"><primary lang="en">services</primary></indexterm>Services can be created and downloaded
as needed. Autonomous management functionality is yet another key feature
of the Java Dynamic Management Kit, allowing a very large installed base to
be managed.</para><para lang="en"/></sect2><sect2 id="intro-60" lang="en"><title lang="en">How Does It Work?</title><para lang="en">The Java Dynamic Management Kit relies on <indexterm significance="normal" id="indexterm-7" lang="en"><primary lang="en">Java Management extensions (JMX)</primary></indexterm>Java Management extensions (JMX) principles
to manage resources.  In order to ensure that your resource is a<emphasis lang="en"> manageable resource</emphasis>, you need to make sure that it adheres to
the JMX specification, as the JMX instrumentation level provides a specification
for implementing JMX manageable resources. Manageable resources are implemented
as Managed Beans, or simply MBeans. An <indexterm significance="normal" id="indexterm-8" lang="en"><primary lang="en">MBean</primary></indexterm>MBean is a manageable resources that conforms to certain design
patterns and may be any resource you wish to manage (for example, an application,
an implementation of a service, a device, a user, and so forth). These resources
are developed in Java, or at least offer a Java wrapper, and have been instrumented
so that they can be managed by JMX-compliant applications. For more information
regarding MBeans, please refer to <link linkend="intro-32313" lang="en">"MBeans"</link>.</para><para lang="en">The Java Dynamic Management Kit is the first commercial product to implement the
public specification for the Java Management extensions (JMX). JMX defines
an architecture, design patterns, APIs, and services for application and network
management, all under a single umbrella specification. For more information
regarding JMX, see the <citetitle lang="en">Java Management Extensions</citetitle> specifications document
provided with the Java Dynamic Management Kit.</para><para lang="en">One of the greatest advantages of the Java Dynamic Management Kit is
that it allows you to manage resources from a remote location. Thus, you can
manipulate <indexterm significance="normal" id="indexterm-9" lang="en"><primary lang="en">proxy objects</primary></indexterm>proxy objects
which transparently map onto MBeans in a remote agent. </para><para lang="en"/><para lang="en">You can access all remote JMX manageable resources by:</para><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">Getting an attribute value</para></listitem><listitem lang="en"><para lang="en">Changing an attribute value</para></listitem><listitem lang="en"><para lang="en">Invoking an operation</para></listitem><listitem lang="en"><para lang="en">Receiving a notification emitted by a manageable
resource</para></listitem></itemizedlist><para lang="en"/><para lang="en">The manager can also add new remote JMX manageable resources by:</para><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">Using existing Java classes already loaded in the agent</para></listitem><listitem lang="en"><para lang="en">Using new classes downloaded from an arbitrary
location</para></listitem></itemizedlist><para lang="en"/><para lang="en">The Java Dynamic Management Kit greatly simplifies the development of
management applications by providing <indexterm significance="normal" id="indexterm-10" lang="en"><primary lang="en">multi-protocol communication</primary><seealso lang="en"><gentext type="text">See also </gentext>SNMP, HTTP/TCP, RMI</seealso></indexterm>multi-protocol
communication between the manager side and the agent side. Devices or applications
can be managed directly via a basic Web browser or through an existing SNMP
management application. An extensible set of protocol adaptors (for example,
HTTP/TCP, RMI, SNMP) is provided to allow developers to adapt their applications
to the local communication environment. </para><para lang="en">To create brand new agents, use a <indexterm significance="normal" id="indexterm-11" lang="en"><primary lang="en">managed object generator (proxygen)</primary><see lang="en"><gentext type="text">See </gentext>proxygen</see></indexterm>managed object
generator (<command moreinfo="none" lang="en">proxygen</command>), which is provided with the Java Dynamic
Management Kit. With this tool, you can create applications with automatically-generated
remote access modules that handle communication support and protocol transparency.
Simply put, you can create a <indexterm significance="normal" id="indexterm-12" lang="en"><primary lang="en">proxy object</primary></indexterm>proxy
object for each JMX object you wish to manage remotely.</para><para lang="en">The Java Dynamic Management Kit also provides a toolkit for developing <indexterm significance="normal" id="indexterm-13" lang="en"><primary lang="en">SNMP</primary></indexterm>SNMP agents and managers, including the <command moreinfo="none" lang="en">mibgen</command> compiler, which takes as input a set of SNMP MIBs and generates
standard MBeans that implement the MIBs.</para><para lang="en"/></sect2><sect2 id="intro-61" lang="en"><title lang="en">What Development Tools Are Provided?</title><para lang="en">The Java Dynamic Management Kit provides:</para><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">A <indexterm significance="normal" id="indexterm-14" lang="en"><primary lang="en">management archictecture</primary></indexterm>management
architecture which supports the JMX specification. This architecture, in turn,
provides a set of Web-based mechanisms for automatic propagation of management
services across the network to the agents. </para></listitem><listitem lang="en"><para lang="en">An <indexterm significance="normal" id="indexterm-15" lang="en"><primary lang="en">agent framework</primary></indexterm>agent framework, which includes a library of reusable core agent
services in the form of management components based on the <trademark class="trade" lang="en">JavaBeans</trademark> architecture.  New services can be plugged in and old services
removed as management requirements evolve. The services supplied include the
following: monitoring, timer, mlet, and filtering.</para></listitem><listitem lang="en"><para lang="en">Service creation tools, which include: <itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">A <indexterm significance="normal" id="indexterm-16" lang="en"><primary lang="en">managed object generator</primary><see lang="en"><gentext type="text">See </gentext>proxygen</see></indexterm>managed object generator (<command moreinfo="none" lang="en">proxygen</command>),
which helps developers to create their own specific Java technology-based
client management services. </para></listitem><listitem lang="en"><para lang="en">A Java technology-based SNMP MIB Compiler (mibgen)
which takes an SNMP MIB as input and outputs a set of Managed Beans. These
MBeans implement the MIBs, enabling the JDMK agent to be managed by an <indexterm significance="normal" id="indexterm-17" lang="en"><primary lang="en">SNMP</primary></indexterm>SNMP manager. <indexterm significance="normal" id="indexterm-18" lang="en"><primary lang="en">Java Management extensions (JMX)</primary></indexterm></para></listitem></itemizedlist></para></listitem></itemizedlist><para lang="en"/><para lang="en"/><para lang="en"/><para lang="en"/><para lang="en"/><para lang="en"/><para lang="en"/><para lang="en"/><para lang="en"/></sect2></sect1><sect1 id="intro-41670" lang="en"><title lang="en">Key Concepts</title><indexterm significance="normal" id="intro-ix2" lang="en"><primary lang="en">key concepts</primary></indexterm><para lang="en"><firstterm lang="en">Figure 1-1 </firstterm>below shows the key concepts
for the Java Dynamic Management Kit. </para><para lang="en">The five keywords are <emphasis lang="en">MBean server</emphasis>, <emphasis lang="en">MBeans</emphasis>, <emphasis lang="en">adaptors</emphasis>, <emphasis lang="en">connectors</emphasis>,
and <emphasis lang="en">proxy MBeans</emphasis>.  </para><figure float="0" id="intro-fig-74" lang="en"><gentext type="text">Figure 1-1 </gentext><title lang="en"> Key Concepts for the Java Dynamic Management Kit</title><graphic filename="figures/intro.keyconcepts.gif" width="414" depth="251" scale="75" id="intro-gr-81" lang="en"/></figure><sect2 id="intro-19255" lang="en"><title lang="en">MBean Server</title><para lang="en">The <indexterm significance="normal" id="indexterm-19" lang="en"><primary lang="en">MBean server</primary></indexterm>MBean server,
referred to as the framework in previous releases, is a registry for JMX manageable
resources which are exposed to management operations in an <indexterm significance="normal" id="indexterm-20" lang="en"><primary lang="en">agent</primary></indexterm>agent. It provides a management framework with
services for manipulating JMX manageable resources that is protocol-independent
and information model-independent. All management operations performed on
these resources are done through the MBean server management interface. You
can create and manage objects by registering them within the MBean server,
thus, making them visible to <indexterm significance="normal" id="indexterm-21" lang="en"><primary lang="en">management applications</primary></indexterm>management applications. The MBean server includes a library of
reusable core agent services in the form of manageable objects, as specified
by Java Management extensions (JMX). These services include mlet, timer, monitoring
and filtering.<indexterm significance="normal" id="indexterm-22" lang="en"><primary lang="en">Java Management extensions (JMX)</primary></indexterm><indexterm significance="normal" id="indexterm-23" lang="en"><primary lang="en">MBean</primary></indexterm></para><para lang="en"/><para lang="en">You can register objects in the <indexterm significance="normal" id="indexterm-24" lang="en"><primary lang="en">MBean server</primary></indexterm>MBean server through: </para><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">The agent application itself</para></listitem><listitem lang="en"><para lang="en">A remote management application (through a connector
or a protocol adaptor)</para></listitem></itemizedlist><para lang="en"/><para lang="en">Any JMX manageable resource that you want to access for management operations
must be registered in the MBean server. This MBean needs to be assigned a
unique <firstterm lang="en">object name</firstterm>. The manager and the agent then
use this object name to identify the object on which it is to perform a management
operation. If you do not specify the object name explicitly, the MBean implementation
may itself provide a name by default. It is possible to have multiple MBean
servers within the same Java Dynamic Management Kit agent.</para></sect2><sect2 id="intro-32313" lang="en"><title lang="en">MBeans</title><para lang="en">JMX's instrumentation level provides standards for implementing JMX
manageable resources. The instrumentation of a given manageable resource is
provided by one or more Managed Beans, or  <firstterm lang="en">MBeans</firstterm> (previously
written<emphasis lang="en"> m-beans</emphasis>). An <indexterm significance="normal" id="indexterm-25" lang="en"><primary lang="en">MBean</primary></indexterm>MBean is a Java object that conforms to certain design patterns
for exposing attributes and operations. These attributes and operations enable
any Java Dynamic Management agent to recognize and manage the MBean. The design
patterns for MBeans give the developer explicit control over how a resource,
device or application will be managed. For example, attribute patterns enable
you to make the distinction between a read-only and a read-write property
in an MBean. The set of all attributes and operations exposed to management
through the design patterns is called the <indexterm significance="normal" id="indexterm-26" lang="en"><primary lang="en">management interface</primary></indexterm><emphasis lang="en">management interface</emphasis> of an MBean.
MBeans implement a <emphasis lang="en">management interface</emphasis> which defines
the attributes and operations accessible for management.  Any object that
you want to make accessible through the MBean server <emphasis lang="en">must</emphasis>
be represented as an MBean, including the resources you want an <indexterm significance="normal" id="indexterm-27" lang="en"><primary lang="en">agent</primary></indexterm>agent to manage and any <indexterm significance="normal" id="indexterm-28" lang="en"><primary lang="en">services</primary></indexterm>services that you want to provide to manage
these resources. MBeans can both generate and propagate notification events
to remote <indexterm significance="normal" id="indexterm-29" lang="en"><primary lang="en">management applications</primary></indexterm>management
applications. For more information regarding managing MBeans remotely, please
refer to <link linkend="intro-98" lang="en">"Proxy MBeans"</link> and <link linkend="intro-99" lang="en">"Generic Proxy MBeans"</link>. MBeans must
be developed according to the rules specified by <indexterm significance="normal" id="indexterm-30" lang="en"><primary lang="en">Java Management extensions (JMX)</primary></indexterm>Java Management extensions
(JMX).</para><para lang="en">The JMX architecture enables you to carry out certain operations on
a particular agent, by going through that agent's MBean server. These operations
are as follows:<itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">Manage existing MBeans by:<itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">Listing MBeans</para></listitem><listitem lang="en"><para lang="en">Enabling MBean attributes to be accessed both locally
and remotely</para></listitem><listitem lang="en"><para lang="en">Enabling new MBeans to be instantiated and registered
both locally and remotely</para></listitem><listitem lang="en"><para lang="en">Performing operations defined by the MBeans</para></listitem><listitem lang="en"><para lang="en">Receiving notifications emitted by MBeans</para></listitem><listitem lang="en"><para lang="en">Discovering the <indexterm significance="normal" id="indexterm-31" lang="en"><primary lang="en">management interface</primary></indexterm>management interface of MBeans</para></listitem><listitem lang="en"><para lang="en">Allowing you to develop a generic manager</para></listitem><listitem lang="en"><para lang="en">Providing a view of the MBean through a specific
protocol</para></listitem></itemizedlist></para></listitem></itemizedlist></para><para lang="en">You can manage a new MBean as soon as it is registered within the <indexterm significance="normal" id="indexterm-32" lang="en"><primary lang="en">MBean server</primary></indexterm>MBean server. An MBean can be created
and registered by:</para><para lang="en"><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">Another object within the <indexterm significance="normal" id="indexterm-33" lang="en"><primary lang="en">agent</primary></indexterm>agent</para></listitem><listitem lang="en"><para lang="en">A remote <indexterm significance="normal" id="indexterm-34" lang="en"><primary lang="en">managment application</primary></indexterm>management application connected to the agent</para></listitem></itemizedlist></para><para lang="en">MBeans can also be downloaded from a Web server and plugged into an
agent at any time, in response to a demand by the management application.
This is called <indexterm significance="normal" id="indexterm-35" lang="en"><primary lang="en">dynamic class loading</primary></indexterm>dynamic
class loading and means that future services and applications can be loaded
on-the-fly and without downtime once they have been deployed on the network.
For example, dynamic class loading can be used to provide rapid, low-cost
delivery of end-user applications across very large bases of Java technology-enabled
devices, such as desktop PC's or Web phones.</para><para lang="en">The management services supplied with the Java Dynamic Management Kit
are implemented as MBeans. You can also write the MBeans representing objects
you wish to manage. These objects could include the actual resources you want
to manage and the value-added services provided to help manage resources.
 The Java Dynamic Management Kit does not impose any restrictions on where compiled
MBean classes are stored. They can be stored at any location specified in
the <systemitem class="environvar" moreinfo="none" lang="en">CLASSPATH</systemitem> environment variable
of the agent, or at a remote site. </para><para lang="en"/><indexterm significance="normal" id="indexterm-36" lang="en"><primary lang="en">Managed Objects</primary></indexterm><para lang="en">You can develop two types of <firstterm lang="en">MBeans</firstterm>:<itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">Standard MBeans</para></listitem><listitem lang="en"><para lang="en">Dynamic MBeans</para></listitem></itemizedlist></para></sect2><sect2 id="intro-88" lang="en"><title lang="en">Standard MBeans</title><indexterm significance="normal" id="indexterm-37" lang="en"><primary lang="en">MBeans, Standard</primary></indexterm><para lang="en"><firstterm lang="en">Standard MBeans</firstterm> are Java objects that conform
to certain design patterns derived from the JavaBeans component model. Standard
MBeans allow you to define your management interface as a Java Interface and
this interface, in turn, defines the handles that are exposed to management
of that particular resource. The methods for reading and writing the MBean's
attributes and for invoking its operations are described in this <indexterm significance="normal" id="indexterm-38" lang="en"><primary lang="en">management interface</primary></indexterm>management interface. Standard
MBeans are defined statically, in that the elements of their management interface
are defined at compilation time and cannot be controlled or altered at runtime.
They are the quickest and easiest type of MBeans to implement when you want
to create new MBeans for new manageable resources where their data structure
is defined in advance and is unlikely to change often.</para></sect2><sect2 id="intro-89" lang="en"><title lang="en">Dynamic MBeans</title><indexterm significance="normal" id="indexterm-39" lang="en"><primary lang="en">MBeans, Dynamic</primary></indexterm><para lang="en"><firstterm lang="en">Dynamic MBeans</firstterm> allow  your application or domain
specific manager to define the management interface for a resource at run
time. This provides a simple way to  wrap existing non-MBean style or even
non-<trademark class="trade" lang="en">Java</trademark> technology based resources and offers greater
flexibility than standard MBeans. Dynamic MBeans are more suited to  management
structures that change over time and are, hence, dynamic. Dynamic MBeans allow
manageable resources to be flexible because they have a pre-defined interface
which allows attributes and operations to be exposed only at run time.</para></sect2><sect2 id="intro-98" lang="en"><title lang="en">Proxy MBeans</title><indexterm significance="normal" id="indexterm-40" lang="en"><primary lang="en">MBeans, Proxy</primary></indexterm><para lang="en">A  <indexterm significance="normal" id="indexterm-41" lang="en"><primary lang="en">proxy MBean</primary></indexterm><firstterm lang="en">proxy MBean</firstterm> (referred to as a client bean or c-bean in previous
releases) represents the manager view of the managed MBean, where the manager
has been developed using the remote <indexterm significance="normal" id="indexterm-42" lang="en"><primary lang="en">MBean server</primary></indexterm>MBean server interface. This interface makes the functionality
of the MBean server available in the remote management application (also referred
to as the <emphasis lang="en">manager</emphasis>) and lets the manager interact directly
with the MBean server of the agent, or instantiate proxy MBeans to manipulate
remote MBeans transparently.</para><para lang="en">The manager accesses an MBean by performing operations on the proxy
MBean, which are then propagated to the MBean. These operations are: </para><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">Getting or setting attributes</para></listitem><listitem lang="en"><para lang="en">Operation invocations</para></listitem><listitem lang="en"><para lang="en">Notifications emitted by the MBean are propagated
to the remote manager application</para></listitem></itemizedlist><para lang="en"/><para lang="en">A Proxy MBean is generated from an MBean by using the <command moreinfo="none" lang="en">proxygen</command> compiler, supplied with the Java Dynamic Management Kit. A proxy MBean can
only be generated from a standard MBean and is created to <emphasis lang="en">mirror</emphasis> an existing MBean. Proxy MBeans are ideal when the management
interface does not need to change over time, hence, where the attributes and
operations available are stable. <indexterm significance="normal" id="indexterm-43" lang="en"><primary lang="en">Managed Object Generator</primary><see lang="en"><gentext type="text">See </gentext>proxygen</see></indexterm></para></sect2><sect2 id="intro-99" lang="en"><title lang="en">Generic Proxy MBeans</title><indexterm significance="normal" id="indexterm-44" lang="en"><primary lang="en">MBeans, Generic Proxy</primary></indexterm><para lang="en">A <firstterm lang="en">generic proxy MBean</firstterm> acts in the same manner
as a proxy MBean. However, you do not generate generic proxy MBeans using
the <command moreinfo="none" lang="en">proxygen</command> compiler as with proxy MBeans, but simply
by creating a new instance of a generic proxy MBean. Generic proxy MBeans
are ideal when you want to perform operations on one MBean and when you know
that the attributes and operations of that MBean will change. For example,
sometimes you may have write permissions on an attribute and other times you
may only be able to read the attribute. This makes generic proxy MBeans the
perfect solution for dynamic management systems, where an MBean's properties
are likely to change at run time. Generic proxy MBeans can be used to manage
either standard MBeans or dynamic MBeans, thus, can <emphasis lang="en">mirror</emphasis>
both types of MBeans.<indexterm significance="normal" id="indexterm-45" lang="en"><primary lang="en">MBeans, Standard</primary></indexterm><indexterm significance="normal" id="indexterm-46" lang="en"><primary lang="en">MBeans, Dynamic</primary></indexterm></para></sect2><sect2 id="intro-21101" lang="en"><title lang="en">Connectors And Protocol Adaptors</title><para lang="en">Connectors and Protocol Adaptors allows an agent to be accessed and
managed by remote custom management applications. These applications could
be outside the agent's Java Virtual Machine (JVM). This can be seen in the
previous illustration, <link linkend="intro-fig-74" lang="en">Figure 1-1</link> .</para><para lang="en"><firstterm lang="en">Connectors</firstterm> (referred to as adaptors in previous
releases) connect the MBean server to management applications and enable MBeans
to be instantiated and managed remotely. Every connector provides the same
remote management interface, but through a different protocol, which allows
remote management applications to connect to agents transparently through
the network, regardless of the specific protocol. One or more connector clients
can be connected to the MBean server, providing views through specific protocols
of the MBeans instantiated and registered with the <indexterm significance="normal" id="indexterm-47" lang="en"><primary lang="en">MBean server</primary></indexterm>MBean server. The Java Dynamic Management Kit
provides connectors for most major internet protocols (for example, <indexterm significance="normal" id="indexterm-48" lang="en"><primary lang="en">HTTP/TCP</primary><seealso lang="en"><gentext type="text">See also </gentext>RMI</seealso></indexterm>HTTP/TCP and
RMI) .</para><para lang="en"/><para lang="en"><indexterm significance="normal" id="indexterm-49" lang="en"><primary lang="en">Multi-Protocol Communication</primary></indexterm>A
connector is composed of two parts:</para><para lang="en"><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">A connector server on the agent side</para></listitem><listitem lang="en"><para lang="en">A connector client on the manager side</para></listitem></itemizedlist></para><para lang="en">The interface of the remote MBean server is implemented by the connector
client. Connectors allow management applications to be transposed onto a manager
site, offering the same level of functionality at both the agent and manager
side while ensuring seamless, transparent connectivity.</para><para lang="en"><firstterm lang="en">Protocol Adaptors </firstterm>have only a server component
and provide connection between a remote management application and an agent,
via a specific network protocol. From a manager side, you can view and manage
all MBeans registered in the MBean server. This can be achieved by directly
accessing the MBean server's interface through a given protocol. For example,
a web browser accesses the <indexterm significance="normal" id="indexterm-50" lang="en"><primary lang="en">HTML</primary></indexterm>HTML
protocol adaptor directly and, therefore, a client of the HTML protocol adaptor
is an HTML browser. Similarly, an <indexterm significance="normal" id="indexterm-51" lang="en"><primary lang="en">SNMP</primary></indexterm>SNMP
manager accesses the SNMP adaptor directly. Therefore, a client of the SNMP
adaptor is an SNMP manager. </para><para lang="en"/><para lang="en"> In addition, the Java Dynamic Management Kit provides an SNMP toolkit
that allows you to generate MBeans that support standard or proprietary MIB's,
enabling new Java technology-based agents to be integrated into existing network
infrastructures, including most SNMP-based management products.</para><para lang="en"/><para lang="en">Connectors and protocol adaptors enable management applications to:</para><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">Find existing MBeans through their object names</para></listitem><listitem lang="en"><para lang="en">Get or set attributes of existing MBean instances</para></listitem><listitem lang="en"><para lang="en">Invoke operations on existing MBean instances</para></listitem><listitem lang="en"><para lang="en">Instantiate an MBean and register the new MBean
instance</para></listitem><listitem lang="en"><para lang="en">Receive notifications from known MBeans (except
through the HTML adaptor)</para></listitem></itemizedlist><para lang="en"/><para lang="en">For an agent to be managed remotely, it must include at least one connector
or protocol adaptor. However, an agent can include any number of connectors
or protocol adaptors, enabling it to be managed remotely by many managers,
through different protocols. Proxy MBeans, at the manager side, are used to
perform management operations on the corresponding MBeans at the agent side.
These MBeans are registered with the <indexterm significance="normal" id="indexterm-52" lang="en"><primary lang="en">MBean server</primary></indexterm>MBean server in a manner that is protocol-independent. Neither
connectors nor protocol adaptors are automatically started when they are created,
which allows you to specify the port number before you start them.<indexterm significance="normal" id="indexterm-53" lang="en"><primary lang="en">Agent, Managed</primary></indexterm></para><sect3 id="intro-91" lang="en"><title lang="en">JMX MBean Notification Model</title><para lang="en">The management interface of an MBean allows an MBean's agent to perform
control and configuration operations on the managed resources. The JMX MBean
notification model allows MBeans to broadcast management notifications. <indexterm significance="normal" id="indexterm-54" lang="en"><primary lang="en">Management applications</primary></indexterm>Management applications
and other objects register as listeners with the broadcaster MBean. The JMX
MBean notification model enables a <indexterm significance="normal" id="indexterm-55" lang="en"><primary lang="en">listener</primary></indexterm>listener to register only once and still receive all different
notifications that may occur in the broadcast.</para><figure float="0" id="intro-fig-83" lang="en"><gentext type="text">Figure 1-2 </gentext><title lang="en">Remote Notification Mechanism</title><graphic filename="figures/intro.notifications.epsi.gif" width="450" depth="291" id="intro-gr-124" lang="en"/></figure><para lang="en"> <link linkend="intro-fig-83" lang="en">Figure 1-2</link> illustrates the <indexterm significance="normal" id="indexterm-56" lang="en"><primary lang="en">remote notification</primary></indexterm>remote notification mechanism. This
can be seen in terms of the <firstterm lang="en">Pull</firstterm> mechanism and the <firstterm lang="en">Push</firstterm> mechanism. </para></sect3><sect3 id="intro-90" lang="en"><title lang="en">Adding Notification Listeners</title><para lang="en">If you want to add a <indexterm significance="normal" id="indexterm-57" lang="en"><primary lang="en">listener</primary></indexterm>listener
of notifications at the agent side you need to call the <emphasis lang="en">addNotificationListener</emphasis> method on the MBean server. In this case, the notification will
not be forwarded to the connector client. You can also add a listener, <emphasis lang="en">addNotificationListener</emphasis>on the remote <indexterm significance="normal" id="indexterm-58" lang="en"><primary lang="en">MBean server</primary></indexterm>MBean server or on proxy MBean A.<indexterm significance="normal" id="indexterm-59" lang="en"><primary lang="en">MBean, Proxy</primary></indexterm></para><para lang="en">There are two ways you can add a listener to the manager side. Firstly,
you can call the appropriate <emphasis lang="en">addNotificationListener</emphasis>
operation on proxy MBean A. This will transmit a call to the agent side and
a protocol-dependent, appropriate listener will be created in the MBean server
(L1 in <link linkend="intro-fig-83" lang="en">Figure 1-2</link>). This is a protocol-dependent, generated
listener and is handled by the connector server. It is in charge of sending
notifications throughout the network, from the agent side to the manager side,
using a specified protocol. Secondly, you can call the <emphasis lang="en">addNotificationListener</emphasis> method on the remote MBean server.</para></sect3><sect3 id="intro-84" lang="en"><title lang="en">The Push Mechanism</title><para lang="en">You can choose to use the <firstterm lang="en">Push Mechanism</firstterm> to push
notifications from an agent to a manager. When the connectors run employ the <firstterm lang="en">Push Mechanism </firstterm>the connector server forwards the notifications
to the connector client as soon as they are emitted by the MBeans. For example,
you can register proxy MBean A as a listener of notifications emitted by MBean
A. Thus, when MBean A, at the agent side, emits a notification, the HTTP or
RMI adaptor forwards this notification to the connector client at the manager
side. <indexterm significance="normal" id="indexterm-60" lang="en"><primary lang="en">MBean server, remote</primary></indexterm></para></sect3><sect3 id="intro-71" lang="en"><title lang="en">The Pull Mechanism</title><para lang="en">You can choose to use the <firstterm lang="en">Pull Mechanism</firstterm> to forward
notifications from an agent to a manager. This is useful, for instance, when
the agent is unable to connect to a manager. For example, if there is a fire-wall
in place between the agent side and the manager side.  You can use the Pull
Mechanism to pull notifications from the agent side to the manager side. When
you create the remote MBean server you need to set the mechanism mode and
the pull period. The pull period is the time period between pulls. Pulls occur
when the <indexterm significance="normal" id="indexterm-61" lang="en"><primary lang="en">HTTP</primary><seealso lang="en"><gentext type="text">See also </gentext>RMI</seealso></indexterm><indexterm significance="normal" id="indexterm-62" lang="en"><primary lang="en">RMI</primary><seealso lang="en"><gentext type="text">See also </gentext>HTTP</seealso></indexterm>HTTP/RMI connector
server at the agent side is instructed by the manager to attempt to pull notifications.
Thus, the manager decides when, and how often, it wants to retrieve notifications
. For example, the pull frequency could be set to try to get notifications
every thirty seconds or every minute.<indexterm significance="normal" id="indexterm-63" lang="en"><primary lang="en">MBean server, remote</primary></indexterm></para></sect3></sect2></sect1></chapter><chapter id="intro2-1" lang="en"><gentext type="text">Chapter 2</gentext><gentext type="toc">2.  The Java Dynamic Management Kit Development Process</gentext><title lang="en">The Java Dynamic Management Kit Development Process</title><sect1 id="intro2-2" lang="en"><title lang="en">Developing an Application</title><indexterm significance="normal" id="indexterm-64" lang="en"><primary lang="en">development process, overview</primary></indexterm><para lang="en"/><figure float="0" id="intro2-fig-3" lang="en"><gentext type="text">Figure 2-1 </gentext><title lang="en">MBean Development and Distribution Process</title><graphic filename="figures/intro.process.epsi.gif" width="489" depth="278" id="intro2-gr-4" lang="en"/></figure><para lang="en"/><para lang="en">The main steps in developing an application with the Java Dynamic Management Kit
are:</para><para lang="en"/><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">Creating new MBeans/ adapting existing resources through instrumentation</para></listitem><listitem lang="en"><para lang="en">Registering MBeans</para></listitem><listitem lang="en"><para lang="en">Testing the MBeans with a web browser</para></listitem><listitem lang="en"><para lang="en">Optional: generating proxy MBeans</para></listitem><listitem lang="en"><para lang="en">Developing a manager </para></listitem></itemizedlist><beginpage lang="en"/><sect2 id="intro2-5" lang="en"><title lang="en">Creating New MBeans/Adapting Existing Resources</title><para lang="en">As discussed earlier in <link linkend="intro-41670" lang="en">"Key Concepts"</link>, MBeans conform
to the <indexterm significance="normal" id="indexterm-65" lang="en"><primary lang="en">Java Management extensions (JMX)</primary></indexterm>JMX
specification, which formalizes the representation of the MBean's <indexterm significance="normal" id="indexterm-66" lang="en"><primary lang="en">management interface</primary></indexterm>management interface. Management
interfaces are represented as attributes and operations which you can invoke.
You must create new MBeans which adhere to the design patterns for exposing
these attributes, specified by JMX. The design patterns for developing MBeans
are specific to the MBean model, and are defined to ease the interaction between
objects and the <indexterm significance="normal" id="indexterm-67" lang="en"><primary lang="en">MBean server</primary></indexterm>MBean
server. You may also select MBeans from those included in the toolkit and
customize them, using a Java Development Environment in order to generate
MBeans for the services you require. <indexterm significance="normal" id="indexterm-68" lang="en"><primary lang="en">managed objects</primary></indexterm></para><para lang="en">Attributes define the appearance or behavior of an MBean or are attributes
of the managed resource that the MBean represents. For example, an <indexterm significance="normal" id="indexterm-69" lang="en"><primary lang="en">attribute</primary></indexterm>attribute named <literal moreinfo="none" lang="en">ipackets</literal> in an MBean representing an Ethernet driver could be defined to
represent the number of incoming packets. Attributes can have arbitrary types,
including built-in Java types, and class or interface types such as <literal moreinfo="none" lang="en">java.awt.Color</literal>.</para><para lang="en">Attributes are always accessed via operation calls on the object that
owns them. For readable attributes, there is a <firstterm lang="en">getter</firstterm>
operation to read the attribute value. For writable attributes, there is a <firstterm lang="en">setter</firstterm> operation to allow the attribute value to be updated. </para><para lang="en">By default, the following design pattern is used for identifying attributes:<programlisting format="linespecific" lang="en" role="fragment">public <replaceable lang="en">attributeType</replaceable> get<replaceable lang="en">attributeName</replaceable>();
public void set<replaceable lang="en">attributeName</replaceable>(<replaceable lang="en">attributeType</replaceable> value);</programlisting></para><para lang="en">If a class definition contains a matching pair of <function moreinfo="none" lang="en">get<replaceable lang="en">attributeName</replaceable><gentext type="text">()</gentext></function> and <function moreinfo="none" lang="en">set<replaceable lang="en">attributeName</replaceable><gentext type="text">()</gentext></function> operations these operations define a read-write
attribute. If a class definition contains only one of these operations the
operation defines either a read-only or write-only attribute called <replaceable lang="en">attributeName</replaceable>.</para></sect2><sect2 id="intro2-6" lang="en"><title lang="en">Registering MBeans</title><para lang="en">To enable an MBean to be managed by a Java Dynamic Management agent, register
it in the MBean server. Registering an MBean does not necessarily require
any modification of code. You can write the MBean so that it can control its
own registration, should you wish to do so. </para><para lang="en">An MBean is registered by code in the agent which is to manage the MBean's
resources. The Java Dynamic Management Kit enables you to register an existing MBean
instance or to instantiate and register an MBean in a single operation. When
registered, an MBean is assigned an object name by the user. If the user does
not give the object a name then the object can assign a name for itself.</para><para lang="en">An MBean can also be instantiated and registered remotely by code in
a Java Dynamic Management client.</para><para lang="en">Regardless of the registration operation, the MBean server generates
a notification whenever an MBean is registered. The information sent with
the notification includes the object name of the new MBean. </para></sect2><sect2 id="intro2-7" lang="en"><title lang="en">Testing MBeans With A Web Browser</title><para lang="en">After you have compiled your MBean classes, you are able to use a web
browser to test them. You do this by connecting a web browser to a running
agent (for example, the base agent), instantiating MBeans, and performing
other operations on the MBean instances. Before connecting a web browser to
an agent, make sure that:</para><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">The agent is running on a machine that you can access by using
the <indexterm significance="normal" id="indexterm-70" lang="en"><primary lang="en">HTTP</primary></indexterm>HTTP protocol</para></listitem><listitem lang="en"><para lang="en">The agent contains an instance of <indexterm significance="normal" id="indexterm-71" lang="en"><primary lang="en">HTML</primary></indexterm>HTML adaptor</para></listitem><listitem lang="en"><para lang="en">The compiled MBean classes are stored at a location
specified in the <indexterm significance="normal" id="indexterm-72" lang="en"><primary lang="en">CLASSPATH environment variable</primary></indexterm><systemitem class="environvar" moreinfo="none" lang="en">CLASSPATH</systemitem> environment
variable of the agent</para></listitem></itemizedlist><para lang="en">To use a web browser to communicate with an agent, open the page given
by the following URL in a web browser:</para><programlisting format="linespecific" lang="en" role="fragment">http://<replaceable lang="en">host</replaceable>:<replaceable lang="en">port</replaceable></programlisting><para lang="en">where:</para><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en"><replaceable lang="en">host</replaceable> is the host name of the machine
on which the agent is running</para></listitem><listitem lang="en"><para lang="en"><replaceable lang="en">port </replaceable>is the port number
used by the HTML adaptor in the agent; the default port number is 8082</para></listitem></itemizedlist><para lang="en"/><para lang="en">The HTML page displayed is generated by the HTML adaptor and enables
you to perform the following operations on MBeans in the agent:</para><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">Reading or writing the attributes of an MBean instance</para></listitem><listitem lang="en"><para lang="en">Performing an operation on an MBean instance</para></listitem><listitem lang="en"><para lang="en">Instantiating an MBean</para></listitem><listitem lang="en"><para lang="en">Deleting an <indexterm significance="normal" id="indexterm-73" lang="en"><primary lang="en">MBean</primary></indexterm>MBean instance</para></listitem></itemizedlist></sect2><sect2 id="intro2-8" lang="en"><title lang="en">Optional: Generating <indexterm significance="normal" id="indexterm-74" lang="en"><primary lang="en">proxy MBeans</primary></indexterm>Proxy
MBeans</title><indexterm significance="normal" id="indexterm-75" lang="en"><primary lang="en">MBean, Proxy</primary></indexterm><para lang="en">As discussed earlier in this guide, a proxy MBean is an object that
represents a remote MBean to a Java Dynamic Management manager. The manager accesses
an MBean by performing operations on the proxy MBean. The operations are then
propagated to the MBean.</para><para lang="en">A proxy MBean is generated from its MBean by using the <indexterm significance="normal" id="indexterm-76" lang="en"><primary lang="en">proxygen</primary><see lang="en"><gentext type="text">See </gentext>Managed Object Generator</see></indexterm><command moreinfo="none" lang="en">proxygen</command> compiler supplied with the Java Dynamic Management Kit. A generic
proxy MBean can be created by simply creating an instance and, hence, there
it is not generated using the <command moreinfo="none" lang="en">proxygen</command> compiler. The MBean's
input to <command moreinfo="none" lang="en">proxygen</command> must be in the form of compiled Java
classes, not source files. The numerous options of this tool allow you to
customize your MBeans depending on how you wish to use them in your management
application.</para><para lang="en">A <indexterm significance="normal" id="indexterm-77" lang="en"><primary lang="en">proxy MBean</primary></indexterm>proxy MBean consists
of two components: </para><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">A Java interface that defines which of the operations of the
MBean are accessible to a Java manager</para></listitem><listitem lang="en"><para lang="en">A Java class that implements the operations defined
in the Java interface</para></listitem></itemizedlist><para lang="en"><indexterm significance="normal" id="indexterm-78" lang="en"><primary lang="en">MBean, Proxy</primary></indexterm>For example, if
you have an MBean <replaceable lang="en">MyClass</replaceable>, the <command moreinfo="none" lang="en">proxygen</command> compiler gives you a proxy MBean that consists of the following
files:</para><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en"><replaceable lang="en">MyClassProxyMBean</replaceable><filename moreinfo="none" lang="en">.java</filename> - the Java interface</para></listitem><listitem lang="en"><para lang="en"><replaceable lang="en">MyClassProxy</replaceable><filename moreinfo="none" lang="en">.java</filename> - the Java class</para></listitem></itemizedlist><para lang="en">The <command moreinfo="none" lang="en">proxygen</command> compiler generates Java source code,
not compiled Java classes. For your proxy MBeans to be accessible to a Java
manager, you have to compile the files that <command moreinfo="none" lang="en">proxygen</command> generates,
and make sure that the compiled Java classes are stored at the location specified
by the <indexterm significance="normal" id="indexterm-79" lang="en"><primary lang="en">CLASSPATH environment variable</primary></indexterm><systemitem class="environvar" moreinfo="none" lang="en">CLASSPATH</systemitem> environment variable of the manager,
or are accessible by the class loader of the manager.</para><sect3 id="intro2-9" lang="en"><title lang="en">Proxy MBean Interface</title><para lang="en">A proxy MBean consists of:</para><para lang="en"><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">A Java interface that defines which of the operations of an
MBean are accessible to a Java management application</para></listitem><listitem lang="en"><para lang="en">A Java class which implements the operations defined
in the MBean's interface</para></listitem></itemizedlist></para><para lang="en">The interface of a proxy MBean exposes the attributes and operations
of the corresponding MBean.  All operations have the same signature as in
the original MBean, apart from the exceptions which are unique to the proxy
MBean interface.</para><para lang="en">The generated class provides an implementation for the proxy MBean's
interface. Therefore, the Java class contains the code to implement the getters,
setters and operations of the proxy MBean. To do this, the Java class relies
on the <classname lang="en">com.sun.jdmk.comm.RemoteMBeanServer</classname> interface.
This interface specifies the API for the connector client object which the
management application uses to communicate with its agents. For example, the
Java class implementation of a getter operation calls the appropriate operations
of the interface. Through this interface, the corresponding getter operation
of the MBean is called remotely, and its result is sent back to the proxy
MBean.</para><para lang="en">The generated class implements the <classname lang="en">com.sun.jdmk.Proxy</classname>
interface in order to provide additional management capabilities.</para><para lang="en"> As the interface is used by all connector client objects in the Java Dynamic Management Kit,
all <indexterm significance="normal" id="indexterm-80" lang="en"><primary lang="en">proxy MBeans</primary></indexterm>proxy MBeans can
be connected to their corresponding MBean through any of the communication
protocols. It also guarantees that the behavior of the proxies is not affected
by how the connector client is implemented. </para></sect3><sect3 id="intro2-10" lang="en"><title lang="en">Using The <indexterm significance="normal" id="indexterm-81" lang="en"><primary lang="en">proxygen</primary><see lang="en"><gentext type="text">See </gentext>Managed Object Generator</see></indexterm><command moreinfo="none" lang="en">proxygen</command> Compiler</title><para lang="en">The <command moreinfo="none" lang="en">proxygen</command> compiler takes the compiled Java class
of an MBean and generates the Java interface and Java proxies of a proxy MBean.
The Java proxies consist of Java source code that implements the interface.
To develop a Java manager with code generated by <command moreinfo="none" lang="en">proxygen</command>,
you call the operations of the proxy MBean's interface. This allows you to
remotely manipulate the corresponding MBean on an agent. </para><para lang="en">Options of the <command moreinfo="none" lang="en">proxygen</command> compiler enable you to modify
the characteristics of the proxies you generate from an MBean. For example,
options are available that enable you to generate read-only or read-write
proxies. By generating a set of stubs with different characteristics from
the same MBean, you can develop a <indexterm significance="normal" id="indexterm-82" lang="en"><primary lang="en">Java Manager</primary></indexterm>Java manager whose behavior is modified at runtime, depending
on which stubs are loaded. For example, when the read-only stubs are loaded,
the Java manager will not be able to modify properties in the MBean.</para><para lang="en">To start <command moreinfo="none" lang="en">proxygen</command>, type the command for your operating
environment:</para><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">In a Solaris operating environment:</para><screen format="linespecific" lang="en">prompt% <replaceable lang="en">installDir</replaceable><userinput moreinfo="none" lang="en">/SUNWjdmk/jdmk4.0/1.1 or 1.2/bin/proxygen</userinput> &lt;<replaceable lang="en">options</replaceable>&gt; &lt; <replaceable lang="en">classes</replaceable>&gt;</screen></listitem><listitem lang="en"><para lang="en">In a Windows NT operating environment:</para><screen format="linespecific" lang="en">C:\&gt; <userinput moreinfo="none" lang="en">"</userinput><replaceable lang="en">installDir</replaceable><userinput moreinfo="none" lang="en">\SUNWjdmk\jdmk4.0\1.1 or 1.2\bin\proxygen"</userinput> &lt;<replaceable lang="en">options</replaceable>&gt; &lt; <replaceable lang="en">classes</replaceable>&gt;</screen></listitem></itemizedlist><para lang="en"/></sect3></sect2><sect2 id="intro2-11" lang="en"><title lang="en">Developing A Manager</title><para lang="en">You can develop a manager in the Java language by using the connector
client management interface. The main steps in developing a Java manager are:</para><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">Initializing a connector client</para></listitem><listitem lang="en"><para lang="en">Adding and Implementing a Connector/Protocol Adaptor
to an Agent</para></listitem><listitem lang="en"><para lang="en">Controlling access by a manager to an agent</para></listitem><listitem lang="en"><para lang="en">Adding the services that the connector client requires
in order to operate (refer to <link linkend="intro2-28" lang="en">"Agent Services"</link>)</para></listitem><listitem lang="en"><para lang="en">Instantiating MBeans in an agent</para></listitem><listitem lang="en"><para lang="en">Getting or setting attributes of MBeans</para></listitem><listitem lang="en"><para lang="en">Performing operations on MBeans</para></listitem></itemizedlist><sect3 id="intro2-12" lang="en"><title lang="en">Initializing A Connector Client</title><para lang="en">A connector provides access to MBeans through a communication protocol.
It enables management applications to perform management operations on a Java Dynamic Management
agent. For a Java Dynamic Management agent to be manageable, it must contain at least
one connector. However, a Java Dynamic Management agent can contain <emphasis lang="en">many</emphasis>
protocol adaptors, allowing it to be managed remotely through different protocols.</para><para lang="en">The following connectors/protocol adaptors are supplied with the Java Dynamic Management Kit:</para><para lang="en"><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en"><indexterm significance="normal" id="indexterm-83" lang="en"><primary lang="en">RMI</primary></indexterm>RMI</para></listitem><listitem lang="en"><para lang="en"><indexterm significance="normal" id="indexterm-84" lang="en"><primary lang="en">HTTP/TCP</primary></indexterm>HTTP/TCP</para></listitem><listitem lang="en"><para lang="en"><indexterm significance="normal" id="indexterm-85" lang="en"><primary lang="en">HTML</primary></indexterm>HTML</para></listitem><listitem lang="en"><para lang="en"><indexterm significance="normal" id="indexterm-86" lang="en"><primary lang="en">SNMP</primary></indexterm>SNMP</para></listitem></itemizedlist><indexterm significance="normal" id="indexterm-87" lang="en"><primary lang="en">Multi-Protocol Communication</primary></indexterm></para><sect4 id="intro2-13" lang="en"><title lang="en">RMI Connector</title><para lang="en">The RMI connector enables Java managers to access a Java Dynamic Management agent
using the Java remote operation invocation (RMI) system. </para></sect4><sect4 id="intro2-14" lang="en"><title lang="en">HTTP/TCP Connector</title><para lang="en">The HTTP/TCP connector enables Java managers to access a Java Dynamic Management
agent using HTTP over a TCP/IP connection. It also allows these management
applications to access an agent across proxy servers. By default, the HTTP/TCP
adaptor listens for incoming requests on port 8081. The HTTP/TCP connector
provides login/password authentication. </para></sect4><sect4 id="intro2-15" lang="en"><title lang="en">HTML Protocol Adaptor</title><para lang="en">The HTML protocol adaptor is an HTML server that enables web browsers
to access a Java Dynamic Management agent through the HTTP communication protocol. When
an HTML protocol adaptor is instantiated, it creates a TCP/IP socket and waits
for incoming requests. By default, the HTML adaptor listens for incoming requests
on port 8082. The HTML adaptor provides login/password authentication. </para><para lang="en">The HTML protocol adaptor is provided as a tool for debugging and speeding
the development of agents. As such, it has certain limitations, for example
it does not display complex types or multi-dimensional arrays. </para></sect4><sect4 id="intro2-16" lang="en"><title lang="en">SNMP Protocol Adaptor</title><para lang="en"><indexterm significance="normal" id="indexterm-88" lang="en"><primary lang="en">SNMP</primary></indexterm>The SNMP protocol adaptor
enables an SNMP manager to perform management operations on a Java Dynamic Management Kit
agent. Before using the SNMP protocol adaptor, you need to configure it for
the MIB used by the SNMP manager application. </para></sect4></sect3><sect3 id="intro2-17" lang="en"><title lang="en">Adding And Implementing Connector/Protocol Adaptor To An Agent</title><para lang="en">To add a connector/protocol adaptor to an agent, create an instance
of the Java class that implements the connector/protocol adaptor you want
to use.</para><informaltable frame="topbot" lang="en"><tgroup cols="2" lang="en"><colspec colname="col1" colwidth="88.00*"/><colspec colname="col2" colwidth="308.00*"/><thead lang="en"><row lang="en"><entry colname="col1" colsep="0" lang="en"><para lang="en">Adaptor</para></entry><entry colname="col2" colsep="0" lang="en"><para lang="en">Java Class</para></entry></row></thead><tbody lang="en"><row lang="en"><entry colname="col1" colsep="0" rowsep="0" lang="en"><para lang="en">RMI</para></entry><entry colname="col2" colsep="0" rowsep="0" lang="en"><para lang="en"><classname lang="en">com.sun.jdmk.comm.RmiConnectorServer</classname></para></entry></row><row lang="en"><entry colname="col1" colsep="0" rowsep="0" lang="en"><para lang="en">HTTP/TCP</para></entry><entry colname="col2" colsep="0" rowsep="0" lang="en"><classname lang="en">com.sun.jdmk.comm.HttpConnectorServer</classname></entry></row><row lang="en"><entry colname="col1" colsep="0" rowsep="0" lang="en"><para lang="en">HTML</para></entry><entry colname="col2" colsep="0" rowsep="0" lang="en"><classname lang="en">com.sun.jdmk.comm.HtmlAdaptorServer</classname></entry></row><row lang="en"><entry colname="col1" colsep="0" rowsep="0" lang="en"><para lang="en">SNMP</para></entry><entry colname="col2" colsep="0" rowsep="0" lang="en"><classname lang="en">com.sun.jdmk.comm.SnmpAdaptorServer</classname></entry></row></tbody></tgroup></informaltable><para lang="en">The Java Dynamic Management Kit provides the following ways to add a connector/protocol
adaptor to an agent:</para><para lang="en">A connector/protocol adaptor is an abstraction of a communications protocol.
This means that the communication mechanism between agent and manager is hidden.
The connectors/protocol adaptors provided by the Java Dynamic Management Kit are implemented
as MBeans. This enables them to be managed. The Java Dynamic Management Kit does not
require a connector/protocol adaptor to conform to a specific interface definition
or implementation. However, a connector/protocol adaptor must be able to access
the MBean server to retrieve and change information in MBeans in an agent.</para></sect3><sect3 id="intro2-18" lang="en"><title lang="en">Controlling Access By A Manager To An Agent</title><para lang="en">The Java Dynamic Management Kit provides mechanisms for controlling access by
a manager to an <indexterm significance="normal" id="indexterm-89" lang="en"><primary lang="en">agent</primary></indexterm>agent. The
access control operations available depend on the connector/protocol adaptor
used. </para><para lang="en"><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">The HTTP connector and HTML protocol adaptor both provide
login/password authentication.</para></listitem><listitem lang="en"><para lang="en">The SNMP protocol adaptor provides access control
using information contained in an access control (ACL) file.</para></listitem><listitem lang="en"><para lang="en">The SNMP protocol adaptor can also provide <indexterm significance="normal" id="indexterm-90" lang="en"><primary lang="en">access control</primary></indexterm>access control using information
contained in an access control object.</para></listitem></itemizedlist></para><para lang="en">The Java Dynamic Management Kit does not provide access control for the RMI connector.</para><para lang="en">The HTTP/TCP connector and the HTML protocol adaptor provide login/password
authentication. In this authentication scheme, the client object and the server
object contain authentication information. The server side object contains
an array of objects that contain authentication information for all known
clients. When a client attempts to login, the login/password object that it
sends is compared with the array to see if the client is on the list of permitted
clients. If the list of permitted clients is null, no client authentication
is performed by the adaptor and access is granted to all clients.</para><sect4 id="intro2-19" lang="en"><title lang="en">Access To A Connector</title><para lang="en">A connector client enables a Java manager to access MBeans in a remote
agent through a particular communications protocol. The Java Dynamic Management Kit
provides a connector client for each of the protocols supported . All connector
clients have the same interface, meaning that the manager is protocol-independent. </para><para lang="en">Connector client objects are the objects that <indexterm significance="normal" id="indexterm-91" lang="en"><primary lang="en">management applications</primary></indexterm>management applications use to communicate
with the <indexterm significance="normal" id="indexterm-92" lang="en"><primary lang="en">agents</primary></indexterm>agents that they
wish to manipulate. These objects establish a connection to a corresponding
connector server in an agent, through the specific protocol they implement.
There is thus one connector server and client pair for each protocol supported.<indexterm significance="normal" id="indexterm-93" lang="en"><primary lang="en">Connector, Server</primary></indexterm><indexterm significance="normal" id="indexterm-94" lang="en"><primary lang="en">Connector, client</primary></indexterm></para><para lang="en">A connector client enables Java managers to perform management operations
on a Java agent. Connector clients provide a level of abstraction by allowing
a manager to manipulate local objects, the effects of which are remote. The
manager does not need information on the protocol used to communicate with
the agent; it needs either the class name or object name of the objects to
be managed. </para><para lang="en"/><para lang="en">There are two ways for a manager to interact with its connector client:</para><para lang="en"><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">The management application can call the operations of the
connector client to interact with remote MBeans directly</para></listitem><listitem lang="en"><para lang="en"><indexterm significance="normal" id="indexterm-95" lang="en"><primary lang="en">MBean, Remote</primary></indexterm>The
application can have the connector client instantiate local proxy MBean objects
which represent each MBean in a remote agent; in this case, the manager calls
the operations of the <indexterm significance="normal" id="indexterm-96" lang="en"><primary lang="en">proxy MBean</primary></indexterm>proxy
MBean, derived from its corresponding MBean.<indexterm significance="normal" id="indexterm-97" lang="en"><primary lang="en">MBean, Proxy</primary></indexterm></para><para lang="en">The proxy MBeans themselves rely upon the remote MBean server interface;
they provide simplified access to the remote objects. In both cases, a manager
must have information on the semantics of the MBeans it manages. It is much
easier to write a management application using proxy MBeans, rather than calling
the remote MBean server interface. However, this requires that the appropriate
proxy MBean objects be available to the management application. Manipulating <indexterm significance="normal" id="indexterm-98" lang="en"><primary lang="en">proxy MBeans</primary></indexterm>proxy MBeans also uses more memory
resources as they are instantiated objects.</para></listitem></itemizedlist></para><para lang="en"><indexterm significance="normal" id="indexterm-99" lang="en"><primary lang="en">MBean server, remote</primary></indexterm>Java managers
access a connector through a connector client. The Java Dynamic Management Kit provides
connector clients to enable a Java manager to access a connector using these
protocols: <indexterm significance="normal" id="indexterm-100" lang="en"><primary lang="en">Connector, Client</primary></indexterm></para><para lang="en"><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en"><indexterm significance="normal" id="indexterm-101" lang="en"><primary lang="en">RMI</primary></indexterm>RMI</para></listitem><listitem lang="en"><para lang="en"><indexterm significance="normal" id="indexterm-102" lang="en"><primary lang="en">HTTP/TCP</primary></indexterm>HTTP/TCP</para></listitem></itemizedlist></para></sect4><sect4 id="intro2-20" lang="en"><title lang="en">Access To A Protocol Adaptor</title><para lang="en">The purpose of a protocol adaptor is to enable a manager to:</para><para lang="en"><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">Read and, if allowed, set attributes of MBeans</para></listitem><listitem lang="en"><para lang="en">Invoke operations on MBeans</para></listitem><listitem lang="en"><para lang="en">Receive notifications emitted by MBeans</para></listitem><listitem lang="en"><para lang="en">Request that MBeans are instantiated, registered
and deregistered</para><para lang="en">When a request from a manager to instantiate and register an MBean is
carried out, the Java class of the MBean needs to be specified.  The code
of the class does not have to be present on the same machine as the agent
in which the MBean is to be instantiated.</para></listitem></itemizedlist></para><para lang="en">These types of <indexterm significance="normal" id="indexterm-103" lang="en"><primary lang="en">management applications</primary></indexterm>management applications access adaptors directly:</para><para lang="en"><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">Web browsers accessing the <indexterm significance="normal" id="indexterm-104" lang="en"><primary lang="en">HTML</primary></indexterm>HTML adaptor</para></listitem><listitem lang="en"><para lang="en"><indexterm significance="normal" id="indexterm-105" lang="en"><primary lang="en">SNMP</primary></indexterm>SNMP
managers</para></listitem></itemizedlist></para></sect4></sect3></sect2></sect1><sect1 id="intro2-21" lang="en"><title lang="en">Benefits Of The Java Dynamic Management Kit</title><para lang="en"/><para lang="en">Benefits of the Java Dynamic Management Kit include:</para><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">Dynamic extensibility and scalability</para></listitem><listitem lang="en"><para lang="en">Easy management of Java applications</para></listitem><listitem lang="en"><para lang="en">Easy development of smart agents</para></listitem><listitem lang="en"><para lang="en">Protocol independence</para></listitem></itemizedlist><graphic filename="figures/intro.benefits.epsi.gif" width="526" depth="369" id="intro2-gr-23" lang="en"/><sect2 id="intro2-24" lang="en"><title lang="en">Dynamic Extensibility And Scalability</title><para lang="en">The Java Dynamic Management Kit simplifies the development of extensible agents.
An agent is able to instantiate Java classes loaded from an arbitrary location.
Therefore, it is possible to extend the functionality of a running agent by
making new classes available at an arbitrary location and requesting that
the agent load and instantiate them.</para><para lang="en">Agents developed using the Java Dynamic Management Kit are also scalable. MBeans
can be registered and unregistered with the <indexterm significance="normal" id="indexterm-106" lang="en"><primary lang="en">MBean server</primary></indexterm>MBean server in an <indexterm significance="normal" id="indexterm-107" lang="en"><primary lang="en">agent</primary></indexterm>agent while it is running. By registering and un-registering new
MBeans, the agent can use only what it needs <emphasis lang="en">when it needs it</emphasis>.
This feature enables the size and complexity of an agent to be modified while
the agent is running, without having to stop the agent.<indexterm significance="normal" id="indexterm-108" lang="en"><primary lang="en">agent, extensible</primary></indexterm></para></sect2><sect2 id="intro2-25" lang="en"><title lang="en">Easy Management Of Java Applications</title><para lang="en">The MBean server enables easy management of Java applications. For a
Java application to be manageable, it only needs to be modified so that it:</para><para lang="en"/><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">Instantiates the MBean server and a connector</para></listitem><listitem lang="en"><para lang="en">Registers the objects that, in conjunction with
their states, accurately represent the application</para></listitem></itemizedlist><para lang="en"/><para lang="en">The only restriction is that the registered objects have to be instances
of an MBean. This is not a serious restriction, as it does not force the existing
design to be changed, nor does it require a fixed class inheritance scheme.
When you design an MBean, you do not need to explicitly take into account
the interaction of the MBean with the MBean server or the adaptors. This is
handled for you by the design patterns for MBeans. An application that includes
the MBean server and a <indexterm significance="normal" id="indexterm-109" lang="en"><primary lang="en">connector</primary></indexterm>connector
provides remote access for management operations without the need for any
further development.</para></sect2><sect2 id="intro2-26" lang="en"><title lang="en">Easy Development Of Smart Agents</title><para lang="en">Agents developed using the Java Dynamic Management Kit are smart agents. A smart
agent provides the services needed to process management requests. In a smart
agent, much of the processing can be done locally in the agent itself, reducing
the load on the network connection between the agent and the manager. This
also enables an agent to continue to work if the connection between it and
its manager is lost.</para></sect2><sect2 id="intro2-27" lang="en"><title lang="en">Protocol Independence</title><para lang="en">The design patterns for MBeans do not depend in any way on the protocol
an agent uses for communicating with external applications. This is because
the connectors interact with MBeans through the MBean server. New connectors
(with new protocols) can be developed and used without rewriting existing
MBeans or external applications. All that is required is that the new connector
is able to interact with the MBean server. </para></sect2></sect1><sect1 id="intro2-28" lang="en"><title lang="en">Agent Services</title><para lang="en">To simplify the development of agents for network, system, application,
and service management, the Java Dynamic Management Kit supplies a set of agent services,
which includes base services. Agent services are simply manageable resources,
implemented as MBeans, that can perform management operations on other MBeans,
thus, enabling agents to manage resources.</para><sect2 id="intro2-29" lang="en"><title lang="en">Filtering Service (Base Service)</title><para lang="en">The filtering service selects MBeans to be the subjects of management
operations. Selection is based on the presence and values of specific attributes
in object names. For example, a filter could select all the MBeans for which
the attribute <emphasis lang="en">color</emphasis> is <emphasis lang="en">red</emphasis>. The
filtering service is not implemented as an MBean. It is part of the infrastructure
of the MBean server.</para></sect2><sect2 id="intro2-30" lang="en"><title lang="en">Monitoring Service</title><para lang="en">The monitoring service observes numerical values and strings, enabling
the variation over time of a attribute in an MBean to be monitored. The observed
attribute is monitored at intervals specified by the granularity period. An
event notification is sent when the value of the attribute satisfies one of
a set of conditions, thus monitors can notify other objects of several types
of changes in the target. You specify the conditions when you initialize a
monitor.</para></sect2><sect2 id="intro2-31" lang="en"><title lang="en">Timer Service</title><para lang="en">The timer service enables you to create notifications for specific dates
and times, providing a scheduling mechanism based either on a one-time notification
or on a repeated, periodic notification. The notifications or <firstterm lang="en">notification events</firstterm> are sent to all objects registered to receive
timer events. </para><para lang="en">This service performs a function similar to that of the <literal moreinfo="none" lang="en">cron</literal> daemon of the <trademark class="registered" lang="en">UNIX</trademark> operating
system. There are two types of timer notifications:<itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">One-time notification</para></listitem><listitem lang="en"><para lang="en">Periodic notification: a set number of occurrences
at equal intervals over a given time period</para></listitem></itemizedlist></para></sect2><sect2 id="intro2-32" lang="en"><title lang="en">M-Let Service</title><para lang="en">The management applet or <firstterm lang="en">m-let</firstterm> service enables
an agent to obtain MBeans from a remote Java Archive (JAR) file. The agent
does this by loading an m-let text file, which specifies information on the
MBeans to be obtained. The information on each MBean is specified in a single
instance of a tag, called an MLET tag. The location of the m-let text file
is specified by a URL. When an m-let text file is loaded, an instance of each
MBean specified in the file is created.</para></sect2></sect1><sect1 id="intro2-33" lang="en"><title lang="en">The SNMP Toolkit</title><para lang="en">The Java Dynamic Management Kit provides a toolkit for developing <indexterm significance="normal" id="indexterm-110" lang="en"><primary lang="en">SNMP</primary></indexterm>SNMP agents and managers. This includes:<itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">an SNMP agent toolkit</para></listitem><listitem lang="en"><para lang="en">Developing An SNMP Agent</para></listitem><listitem lang="en"><para lang="en">SNMP MIB Compiler --<command moreinfo="none" lang="en"> mibgen</command></para></listitem><listitem lang="en"><para lang="en">SNMP Protocol Adaptor</para></listitem><listitem lang="en"><para lang="en">SNMP Manager API</para></listitem></itemizedlist></para><sect2 id="intro2-34" lang="en"><title lang="en">Developing An SNMP Agent</title><para lang="en">Developing an SMNP Agent using the Java Dynamic Management Kit involves
three steps:</para><para lang="en"><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">Generating Java code by running <command moreinfo="none" lang="en">mibgen</command>
on the target SNMP MIB</para></listitem><listitem lang="en"><para lang="en">Filling in the access operations in the generated
Java code</para></listitem><listitem lang="en"><para lang="en">Configuring the SNMP adaptor with the target MIB</para><para lang="en"><command moreinfo="none" lang="en">mibgen</command> parses an SNMP MIB and generates the following:<itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">an MBean representing the whole MIB</para></listitem><listitem lang="en"><para lang="en">a class representing the metadata definitions for
the MIB variables</para></listitem><listitem lang="en"><para lang="en">classes representing SNMP groups/entries as MBeans
(and a metadata class for each instance generated)</para></listitem><listitem lang="en"><para lang="en">classes representing SNMP tables</para></listitem><listitem lang="en"><para lang="en">classes representing SNMP enumerated types</para></listitem></itemizedlist></para><para lang="en">MBeans generated by <command moreinfo="none" lang="en">mibgen</command> need to be updated to
provide the definitive implementation.</para><para lang="en">SNMP agents developed with the Java Dynamic Management Kit are extensible
in that MIBs can be added or removed during an agent's lifetime. They are
open as <indexterm significance="normal" id="indexterm-111" lang="en"><primary lang="en">SNMP</primary></indexterm>SNMP is not the only
protocol available and <indexterm significance="normal" id="indexterm-112" lang="en"><primary lang="en">HTTP</primary></indexterm>HTTP, <indexterm significance="normal" id="indexterm-113" lang="en"><primary lang="en">HTML</primary></indexterm>HTML and <indexterm significance="normal" id="indexterm-114" lang="en"><primary lang="en">RMI</primary></indexterm>RMI protocol adaptors can also be used to access the agent. They
can be SNMP-only because the SNMP adaptor can be used alone and the MBean
server is not mandatory.</para><para lang="en">For more information regarding this development process, please refer
to the<emphasis lang="en"> Java Dynamic Management Kit Tools Reference Guide.</emphasis></para></listitem></itemizedlist></para></sect2><sect2 id="intro2-35" lang="en"><title lang="en">SNMP MIB Compiler --<command moreinfo="none" lang="en"> mibgen</command></title><para lang="en">The <indexterm significance="normal" id="indexterm-115" lang="en"><primary lang="en">mibgen compiler</primary></indexterm><literal moreinfo="none" lang="en">mibgen</literal> compiler takes as input a set of SNMP MIBs and generates
standard MBeans that implement the MIBs. MIBs can be expressed using SNMP
v1 or SNMP v2 syntax. </para><para lang="en">The <command moreinfo="none" lang="en">mibgen</command> compiler is able to process:</para><para lang="en"><itemizedlist lang="en" mark="bullet"><listitem lang="en"><para lang="en">Tables with cross references indexed across several MIBs</para></listitem><listitem lang="en"><para lang="en">MIBs that contain both v1 and v2 definitions</para></listitem></itemizedlist></para><para lang="en">The <literal moreinfo="none" lang="en">mibgen</literal> compiler also generates the Java source
code required for representing a whole MIB in an SNMP manager. Table objects
provide methods for adding and removing entries from the table.</para><para lang="en">When the whole MIB file is registered in the MBean server, all the associated
groups are automatically instantiated and added to the MBean server. </para></sect2><sect2 id="intro2-36" lang="en"><title lang="en">SNMP Protocol Adaptor</title><para lang="en">The SNMP adaptor implements the SNMP v1 and v2 protocol stack. The protocol
adaptor is able to manage an unlimited number of different Management Information
Bases, commonly referred to as MIBs. By providing a unified view of all the
MIBs, the SNMP adaptor solves the subagent problem that commonly occurs with
SNMP. The SNMP protocol adaptor allows MIBs to be loaded or unloaded dynamically.
This enables a MIB to be loaded into, updated, and unloaded from an agent
while it is running.</para></sect2><sect2 id="intro2-37" lang="en"><title lang="en">SNMP Manager API</title><para lang="en">The SNMP manager API is a set of Java classes that simplifies the development
of applications for managing SNMP agents. The agents may be developed using
the Java Dynamic Management Kit, or by other means. </para></sect2></sect1></chapter><index lang="en"><gentext type="text">Index</gentext><gentext type="toc">Index</gentext><indexdiv lang="en"><title lang="en">A</title><indexentry lang="en"><primaryie lang="en">access control</primaryie><indexlocation>indexterm-90</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">agent</primaryie><indexlocation>indexterm-2</indexlocation><indexlocation>indexterm-20</indexlocation><indexlocation>indexterm-27</indexlocation><indexlocation>indexterm-33</indexlocation><indexlocation>indexterm-89</indexlocation><indexlocation>indexterm-107</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">agent, extensible</primaryie><indexlocation>indexterm-108</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">Agent, Managed</primaryie><indexlocation>indexterm-53</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">agent framework</primaryie><indexlocation>indexterm-15</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">agents</primaryie><indexlocation>indexterm-92</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">attribute</primaryie><indexlocation>indexterm-69</indexlocation></indexentry></indexdiv><indexdiv lang="en"><title lang="en">C</title><indexentry lang="en"><primaryie lang="en">CLASSPATH environment variable</primaryie><indexlocation>indexterm-72</indexlocation><indexlocation>indexterm-79</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">connector</primaryie><indexlocation>indexterm-109</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">Connector, Client</primaryie><indexlocation>indexterm-100</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">Connector, client</primaryie><indexlocation>indexterm-94</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">Connector, Server</primaryie><indexlocation>indexterm-93</indexlocation></indexentry></indexdiv><indexdiv lang="en"><title lang="en">D</title><indexentry lang="en"><primaryie lang="en">development process, overview</primaryie><indexlocation>indexterm-64</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">dynamic class loading</primaryie><indexlocation>indexterm-35</indexlocation></indexentry></indexdiv><indexdiv lang="en"><title lang="en">H</title><indexentry lang="en"><primaryie lang="en">HTML</primaryie><indexlocation>indexterm-50</indexlocation><indexlocation>indexterm-71</indexlocation><indexlocation>indexterm-85</indexlocation><indexlocation>indexterm-104</indexlocation><indexlocation>indexterm-113</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">HTTP</primaryie><seealsoie lang="en"><gentext type="text">See also </gentext>RMI</seealsoie></indexentry><indexentry lang="en"><primaryie lang="en">HTTP/TCP</primaryie><seealsoie lang="en"><gentext type="text">See also </gentext>RMI</seealsoie></indexentry></indexdiv><indexdiv lang="en"><title lang="en">J</title><indexentry lang="en"><primaryie lang="en">Java Management extensions (JMX)</primaryie><indexlocation>indexterm-7</indexlocation><indexlocation>indexterm-18</indexlocation><indexlocation>indexterm-22</indexlocation><indexlocation>indexterm-30</indexlocation><indexlocation>indexterm-65</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">Java Manager</primaryie><indexlocation>indexterm-82</indexlocation></indexentry></indexdiv><indexdiv lang="en"><title lang="en">K</title><indexentry lang="en"><primaryie lang="en">key concepts</primaryie><indexlocation>intro-ix2</indexlocation></indexentry></indexdiv><indexdiv lang="en"><title lang="en">L</title><indexentry lang="en"><primaryie lang="en">listener</primaryie><indexlocation>indexterm-55</indexlocation><indexlocation>indexterm-57</indexlocation></indexentry></indexdiv><indexdiv lang="en"><title lang="en">M</title><indexentry lang="en"><primaryie lang="en">Managed Object Generator</primaryie><seeie lang="en"><gentext type="text">See </gentext>proxygen</seeie></indexentry><indexentry lang="en"><primaryie lang="en">managed object generator</primaryie><seeie lang="en"><gentext type="text">See </gentext>proxygen</seeie></indexentry><indexentry lang="en"><primaryie lang="en">managed object generator (proxygen)</primaryie><seeie lang="en"><gentext type="text">See </gentext>proxygen</seeie></indexentry><indexentry lang="en"><primaryie lang="en">Managed Objects</primaryie><indexlocation>indexterm-36</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">managed objects</primaryie><indexlocation>indexterm-68</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">management applications</primaryie><indexlocation>indexterm-3</indexlocation><indexlocation>indexterm-21</indexlocation><indexlocation>indexterm-29</indexlocation><indexlocation>indexterm-91</indexlocation><indexlocation>indexterm-103</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">Management applications</primaryie><indexlocation>indexterm-54</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">management archictecture</primaryie><indexlocation>indexterm-14</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">management interface</primaryie><indexlocation>indexterm-26</indexlocation><indexlocation>indexterm-31</indexlocation><indexlocation>indexterm-38</indexlocation><indexlocation>indexterm-66</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">managment application</primaryie><indexlocation>indexterm-34</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">MBean</primaryie><indexlocation>indexterm-8</indexlocation><indexlocation>indexterm-23</indexlocation><indexlocation>indexterm-25</indexlocation><indexlocation>indexterm-73</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">MBean, Proxy</primaryie><indexlocation>indexterm-59</indexlocation><indexlocation>indexterm-75</indexlocation><indexlocation>indexterm-78</indexlocation><indexlocation>indexterm-97</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">MBean, Remote</primaryie><indexlocation>indexterm-95</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">MBean server</primaryie><indexlocation>indexterm-19</indexlocation><indexlocation>indexterm-24</indexlocation><indexlocation>indexterm-32</indexlocation><indexlocation>indexterm-42</indexlocation><indexlocation>indexterm-47</indexlocation><indexlocation>indexterm-52</indexlocation><indexlocation>indexterm-58</indexlocation><indexlocation>indexterm-67</indexlocation><indexlocation>indexterm-106</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">MBean server, remote</primaryie><indexlocation>indexterm-60</indexlocation><indexlocation>indexterm-63</indexlocation><indexlocation>indexterm-99</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">MBeans, Dynamic</primaryie><indexlocation>indexterm-39</indexlocation><indexlocation>indexterm-46</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">MBeans, Generic Proxy</primaryie><indexlocation>indexterm-44</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">MBeans, Proxy</primaryie><indexlocation>indexterm-40</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">MBeans, Standard</primaryie><indexlocation>indexterm-37</indexlocation><indexlocation>indexterm-45</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">mibgen compiler</primaryie><indexlocation>indexterm-115</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">multi-protocol communication</primaryie><seealsoie lang="en"><gentext type="text">See also </gentext>SNMP, HTTP/TCP, RMI</seealsoie></indexentry><indexentry lang="en"><primaryie lang="en">Multi-Protocol Communication</primaryie><indexlocation>indexterm-49</indexlocation><indexlocation>indexterm-87</indexlocation></indexentry></indexdiv><indexdiv lang="en"><title lang="en">P</title><indexentry lang="en"><primaryie lang="en">proxy MBean</primaryie><indexlocation>indexterm-41</indexlocation><indexlocation>indexterm-77</indexlocation><indexlocation>indexterm-96</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">proxy MBeans</primaryie><indexlocation>indexterm-74</indexlocation><indexlocation>indexterm-80</indexlocation><indexlocation>indexterm-98</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">proxy object</primaryie><indexlocation>indexterm-12</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">proxy objects</primaryie><indexlocation>indexterm-9</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">proxygen</primaryie><seeie lang="en"><gentext type="text">See </gentext>Managed Object Generator</seeie></indexentry></indexdiv><indexdiv lang="en"><title lang="en">R</title><indexentry lang="en"><primaryie lang="en">remote notification</primaryie><indexlocation>indexterm-56</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">RMI</primaryie><seealsoie lang="en"><gentext type="text">See also </gentext>HTTP</seealsoie></indexentry></indexdiv><indexdiv lang="en"><title lang="en">S</title><indexentry lang="en"><primaryie lang="en">service-driven network</primaryie><indexlocation>indexterm-4</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">services</primaryie><indexlocation>indexterm-6</indexlocation><indexlocation>indexterm-28</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">SNMP</primaryie><indexlocation>indexterm-5</indexlocation><indexlocation>indexterm-13</indexlocation><indexlocation>indexterm-17</indexlocation><indexlocation>indexterm-51</indexlocation><indexlocation>indexterm-86</indexlocation><indexlocation>indexterm-88</indexlocation><indexlocation>indexterm-105</indexlocation><indexlocation>indexterm-110</indexlocation><indexlocation>indexterm-111</indexlocation></indexentry><indexentry lang="en"><primaryie lang="en">Sun Documentation Online</primaryie><indexlocation>indexterm-1</indexlocation></indexentry></indexdiv></index></book>