001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     * 
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     * 
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    
018    
019    package org.apache.commons.modeler;
020    
021    
022    import java.io.File;
023    import java.net.URL;
024    import java.util.List;
025    
026    import org.apache.commons.modeler.util.IntrospectionUtils;
027    
028    
029    /**
030     *  Small main that loads mbeans.
031     *
032     *  Requires: commons-logging-api.jar, jaxp ( including DOM ), jmx
033     *
034     *  Arguments:
035     *   -file FILE
036     *       Will load mbeans from the file
037     *
038     * @author Costin Manolache
039     */
040    
041    public class Main
042    {
043        String file;
044        String home;
045    
046        public void setFile( String f ) {
047            this.file=f;
048        }
049    
050        // shortcut
051        public void setF( String f ) {
052            this.file=f;
053        }
054    
055        public void execute( )
056            throws Exception
057        {
058            if( home==null ) {
059                home=IntrospectionUtils.guessInstall("install.dir", "home.dir",
060                    "commons-modeler.jar", "org.apache.commons.modeler.Main");
061            }
062    
063            if( file==null ) throw new Exception( "No file, use -file file.xml");
064    
065            Registry reg=Registry.getRegistry();
066            File fileF=new File( file );
067            URL url=new URL("file", null, fileF.getAbsolutePath());
068    
069            // Load the mbeans defined in the file and set all
070            // attributes
071            List mbeans=reg.loadMBeans( url, null);
072            reg.invoke(mbeans, "init", false);
073            reg.invoke(mbeans, "start", false);
074        }
075    
076        public static void main( String args[] ) {
077            try {
078                Main main=new Main();
079                IntrospectionUtils.processArgs(main, args);
080    
081                main.execute();
082            } catch( Exception ex ) {
083                ex.printStackTrace();
084            }
085    
086        }
087    }