Home » commons-modeler-2.0.1-src » org.apache.commons » modeler » ant » [javadoc | source]
    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements.  See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License.  You may obtain a copy of the License at
    8    * 
    9    *      http://www.apache.org/licenses/LICENSE-2.0
   10    * 
   11    * Unless required by applicable law or agreed to in writing, software
   12    * distributed under the License is distributed on an "AS IS" BASIS,
   13    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   14    * See the License for the specific language governing permissions and
   15    * limitations under the License.
   16    */
   17   
   18   package org.apache.commons.modeler.ant;
   19   
   20   import java.util.Vector;
   21   
   22   import javax.management.MBeanServer;
   23   import javax.management.MBeanServerFactory;
   24   import javax.management.ObjectName;
   25   
   26   import org.apache.tools.ant.Task;
   27   
   28   /**
   29    * Set mbean properties.
   30    *
   31    */
   32   public class JmxInvoke extends Task {
   33       String objectName;
   34   
   35       String method;
   36       Vector args;
   37   
   38       public JmxInvoke() {
   39   
   40       }
   41   
   42       public void setObjectName(String name) {
   43           this.objectName = name;
   44       }
   45   
   46       public void setOperation(String method) {
   47               this.method = method;
   48       }
   49   
   50       public void execute() {
   51           try {
   52               MBeanServer server=(MBeanServer)project.getReference("jmx.server");
   53   
   54               if (server == null) {
   55                   if( MBeanServerFactory.findMBeanServer(null).size() > 0 ) {
   56                       server=(MBeanServer)MBeanServerFactory.findMBeanServer(null).get(0);
   57                   } else {
   58                       System.out.println("Creating mbean server");
   59                       server=MBeanServerFactory.createMBeanServer();
   60                   }
   61                   project.addReference("jmx.server", server);
   62               }
   63   
   64               ObjectName oname=new ObjectName(objectName);
   65   
   66               if( args==null ) {
   67                   server.invoke(oname, method, null, null);
   68               } else {
   69                   // XXX Use the loader ref, if any
   70                   Object argsA[]=new Object[ args.size()];
   71                   String sigA[]=new String[args.size()];
   72                   for( int i=0; i<args.size(); i++ ) {
   73                       Arg arg=(Arg)args.elementAt(i);
   74                       if( arg.type==null )
   75                           arg.type="java.lang.String";
   76                       sigA[i]=arg.getType();
   77                       argsA[i]=arg.getValue();
   78                       // XXX Deal with not string types - IntrospectionUtils
   79                   }
   80                   server.invoke(oname, method, argsA, sigA);
   81               }
   82           } catch(Exception ex) {
   83               ex.printStackTrace();
   84           }
   85       }
   86   
   87   }

Save This Page
Home » commons-modeler-2.0.1-src » org.apache.commons » modeler » ant » [javadoc | source]