<?xml version="1.0"?>
<!--
  Copyright 2002,2004 The Apache Software Foundation.
  
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at
  
       http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<server xmlns="jelly:jmx">
    <!--
        || define some common MBean types
        -->
    <beandef name="dummyMBean" className="org.apache.commons.jelly.tags.jmx.Dummy"/>
    
    <!-- 
        || Register the MBeans 
        || Attributes can be set on MBeans using 
        || XML attributes or nested elements
        -->
    <register name="Examples:type=short">
        <dummyMBean name="Short version"/>
        <operation name="doSomething"/>
    </register>                
        
    <register name="Examples:type=long">
        <mbean class="org.apache.commons.jelly.tags.jmx.Dummy" name="Longer version"/>
        <operation name="doSomething"/>
    </register>                
        
    <register name="Naming:type=rmiregistry">
        <mbean class="mx4j.tools.naming.NamingService"/>
        <operation name="start"/>
    </register>
        
    <register name="Adaptor:protocol=JRMP">
        <mbean class="mx4j.adaptor.rmi.jrmp.JRMPAdaptor" JNDIName="jrmp"/>
        <operation name="start"/>
    </register>
        
</server>