Example usage for javax.management MBeanOperationInfo INFO

List of usage examples for javax.management MBeanOperationInfo INFO

Introduction

In this page you can find the example usage for javax.management MBeanOperationInfo INFO.

Prototype

int INFO

To view the source code for javax.management MBeanOperationInfo INFO.

Click Source Link

Document

Indicates that the operation is read-like: it returns information but does not change any state.

Usage

From source file:com.espertech.esper.metrics.jmx.CommonJMXUtil.java

private static ModelMBeanOperationInfo[] extractOperationInfo(Object object) {
    ArrayList<ModelMBeanOperationInfo> infos = new ArrayList<ModelMBeanOperationInfo>();
    for (Method m : object.getClass().getMethods()) {
        JmxOperation jmxOperation = m.getAnnotation(JmxOperation.class);
        JmxGetter jmxGetter = m.getAnnotation(JmxGetter.class);
        JmxSetter jmxSetter = m.getAnnotation(JmxSetter.class);
        if (jmxOperation != null || jmxGetter != null || jmxSetter != null) {
            String description = "";
            int visibility = 1;
            int impact = MBeanOperationInfo.UNKNOWN;
            if (jmxOperation != null) {
                description = jmxOperation.description();
                impact = jmxOperation.impact();
            } else if (jmxGetter != null) {
                description = jmxGetter.description();
                impact = MBeanOperationInfo.INFO;
                visibility = 4;//from   w w  w  .jav  a2s  .c o m
            } else if (jmxSetter != null) {
                description = jmxSetter.description();
                impact = MBeanOperationInfo.ACTION;
                visibility = 4;
            }
            ModelMBeanOperationInfo info = new ModelMBeanOperationInfo(m.getName(), description,
                    extractParameterInfo(m), m.getReturnType().getName(), impact);
            info.getDescriptor().setField("visibility", Integer.toString(visibility));
            infos.add(info);
        }
    }

    return infos.toArray(new ModelMBeanOperationInfo[infos.size()]);
}

From source file:com.cyberway.issue.crawler.admin.CrawlJob.java

/**
 * Build up the MBean info for Heritrix main.
 * @return Return created mbean info instance.
 * @throws InitializationException /*from   w  w w  . java2  s  .c  o m*/
 */
protected OpenMBeanInfoSupport buildMBeanInfo() throws InitializationException {
    // Start adding my attributes.
    List<OpenMBeanAttributeInfo> attributes = new ArrayList<OpenMBeanAttributeInfo>();

    // Attributes.
    attributes.add(new OpenMBeanAttributeInfoSupport(NAME_ATTR, "Crawl job name", SimpleType.STRING, true,
            false, false));
    attributes.add(new OpenMBeanAttributeInfoSupport(STATUS_ATTR, "Short basic status message",
            SimpleType.STRING, true, false, false));
    attributes.add(new OpenMBeanAttributeInfoSupport(FRONTIER_SHORT_REPORT_ATTR, "Short frontier report",
            SimpleType.STRING, true, false, false));
    attributes.add(new OpenMBeanAttributeInfoSupport(THREADS_SHORT_REPORT_ATTR, "Short threads report",
            SimpleType.STRING, true, false, false));
    attributes.add(new OpenMBeanAttributeInfoSupport(UID_ATTR, "Crawl job UID", SimpleType.STRING, true, false,
            false));
    attributes.add(new OpenMBeanAttributeInfoSupport(TOTAL_DATA_ATTR, "Total data received", SimpleType.LONG,
            true, false, false));
    attributes.add(new OpenMBeanAttributeInfoSupport(CRAWL_TIME_ATTR, "Crawl time", SimpleType.LONG, true,
            false, false));
    attributes.add(new OpenMBeanAttributeInfoSupport(CURRENT_DOC_RATE_ATTR, "Current crawling rate (Docs/sec)",
            SimpleType.DOUBLE, true, false, false));
    attributes.add(new OpenMBeanAttributeInfoSupport(CURRENT_KB_RATE_ATTR, "Current crawling rate (Kb/sec)",
            SimpleType.LONG, true, false, false));
    attributes.add(new OpenMBeanAttributeInfoSupport(THREAD_COUNT_ATTR, "Active thread count",
            SimpleType.INTEGER, true, false, false));
    attributes.add(new OpenMBeanAttributeInfoSupport(DOC_RATE_ATTR, "Crawling rate (Docs/sec)",
            SimpleType.DOUBLE, true, false, false));
    attributes.add(new OpenMBeanAttributeInfoSupport(KB_RATE_ATTR, "Current crawling rate (Kb/sec)",
            SimpleType.LONG, true, false, false));
    attributes.add(new OpenMBeanAttributeInfoSupport(DOWNLOAD_COUNT_ATTR, "Count of downloaded documents",
            SimpleType.LONG, true, false, false));
    attributes.add(new OpenMBeanAttributeInfoSupport(DISCOVERED_COUNT_ATTR, "Count of discovered documents",
            SimpleType.LONG, true, false, false));

    // Add in the crawl order attributes.
    addCrawlOrderAttributes(this.getController().getOrder(), attributes);

    // Add the bdbje attributes.  Convert to open mbean attributes.
    // First do bdbeje setup.  Then add a subset of the bdbje attributes.
    // Keep around the list of names as a convenience for when it comes
    // time to test if attribute is supported.
    Environment env = this.controller.getBdbEnvironment();
    try {
        this.bdbjeMBeanHelper = new JEMBeanHelper(env.getConfig(), env.getHome(), true);
    } catch (DatabaseException e) {
        e.printStackTrace();
        InitializationException ie = new InitializationException(e.getMessage());
        ie.setStackTrace(e.getStackTrace());
        throw ie;
    }
    this.bdbjeAttributeNameList = Arrays.asList(new String[] { JEMBeanHelper.ATT_ENV_HOME,
            JEMBeanHelper.ATT_OPEN, JEMBeanHelper.ATT_IS_READ_ONLY, JEMBeanHelper.ATT_IS_TRANSACTIONAL,
            JEMBeanHelper.ATT_CACHE_SIZE, JEMBeanHelper.ATT_CACHE_PERCENT, JEMBeanHelper.ATT_LOCK_TIMEOUT,
            JEMBeanHelper.ATT_IS_SERIALIZABLE, JEMBeanHelper.ATT_SET_READ_ONLY, });
    addBdbjeAttributes(attributes, this.bdbjeMBeanHelper.getAttributeList(env), this.bdbjeAttributeNameList);

    // Operations.
    List<OpenMBeanOperationInfo> operations = new ArrayList<OpenMBeanOperationInfo>();
    OpenMBeanParameterInfo[] args = new OpenMBeanParameterInfoSupport[3];
    args[0] = new OpenMBeanParameterInfoSupport("url", "URL to add to the frontier", SimpleType.STRING);
    args[1] = new OpenMBeanParameterInfoSupport("forceFetch", "True if URL is to be force fetched",
            SimpleType.BOOLEAN);
    args[2] = new OpenMBeanParameterInfoSupport("seed", "True if URL is a seed", SimpleType.BOOLEAN);
    operations.add(new OpenMBeanOperationInfoSupport(IMPORT_URI_OPER, "Add passed URL to the frontier", args,
            SimpleType.VOID, MBeanOperationInfo.ACTION));

    args = new OpenMBeanParameterInfoSupport[4];
    args[0] = new OpenMBeanParameterInfoSupport("pathOrUrl", "Path or URL to file of URLs", SimpleType.STRING);
    args[1] = new OpenMBeanParameterInfoSupport("style", "Format format:default|crawlLog|recoveryJournal",
            SimpleType.STRING);
    args[2] = new OpenMBeanParameterInfoSupport("forceFetch", "True if URLs are to be force fetched",
            SimpleType.BOOLEAN);
    args[3] = new OpenMBeanParameterInfoSupport("seed", "True if all content are seeds.", SimpleType.BOOLEAN);
    operations.add(new OpenMBeanOperationInfoSupport(IMPORT_URIS_OPER,
            "Add file of passed URLs to the frontier", args, SimpleType.STRING, MBeanOperationInfo.ACTION));

    args = new OpenMBeanParameterInfoSupport[4];
    args[0] = new OpenMBeanParameterInfoSupport("filename", "File to print to", SimpleType.STRING);
    args[1] = new OpenMBeanParameterInfoSupport("regexp", "Regular expression URLs must match",
            SimpleType.STRING);
    args[2] = new OpenMBeanParameterInfoSupport("numberOfMatches", "Maximum number of matches to return",
            SimpleType.INTEGER);
    args[3] = new OpenMBeanParameterInfoSupport("verbose", "Should they be verbose descriptions",
            SimpleType.BOOLEAN);
    operations.add(new OpenMBeanOperationInfoSupport(DUMP_URIS_OPER,
            "Dump pending URIs from frontier to a file", args, SimpleType.VOID, MBeanOperationInfo.ACTION));

    operations.add(new OpenMBeanOperationInfoSupport(PAUSE_OPER, "Pause crawling (noop if already paused)",
            null, SimpleType.VOID, MBeanOperationInfo.ACTION));

    operations.add(new OpenMBeanOperationInfoSupport(RESUME_OPER, "Resume crawling (noop if already resumed)",
            null, SimpleType.VOID, MBeanOperationInfo.ACTION));

    args = new OpenMBeanParameterInfoSupport[1];
    args[0] = new OpenMBeanParameterInfoSupport("name", "Name of report ('all', 'standard', etc.).",
            SimpleType.STRING);
    operations.add(new OpenMBeanOperationInfoSupport(FRONTIER_REPORT_OPER, "Full frontier report", args,
            SimpleType.STRING, MBeanOperationInfo.INFO));

    operations.add(new OpenMBeanOperationInfoSupport(THREADS_REPORT_OPER, "Full thread report", null,
            SimpleType.STRING, MBeanOperationInfo.INFO));

    operations.add(new OpenMBeanOperationInfoSupport(SEEDS_REPORT_OPER, "Seeds report", null, SimpleType.STRING,
            MBeanOperationInfo.INFO));

    operations.add(new OpenMBeanOperationInfoSupport(PROGRESS_STATISTICS_OPER,
            "Progress statistics at time of invocation", null, SimpleType.STRING, MBeanOperationInfo.INFO));

    operations.add(new OpenMBeanOperationInfoSupport(PROGRESS_STATISTICS_LEGEND_OPER,
            "Progress statistics legend", null, SimpleType.STRING, MBeanOperationInfo.INFO));

    operations.add(new OpenMBeanOperationInfoSupport(CHECKPOINT_OPER, "Start a checkpoint", null,
            SimpleType.VOID, MBeanOperationInfo.ACTION));

    // Add bdbje operations. Add subset only. Keep around the list so have
    // it to hand when figuring what operations are supported. Usual actual
    // Strings because not accessible from JEMBeanHelper.
    this.bdbjeOperationsNameList = Arrays.asList(new String[] { "cleanLog", "evictMemory", "checkpoint", "sync",
            "getEnvironmentStatsToString", "getLockStatsToString", "getDatabaseNames", OP_DB_STAT });
    addBdbjeOperations(operations, this.bdbjeMBeanHelper.getOperationList(env), this.bdbjeOperationsNameList);

    // Register notifications
    List<MBeanNotificationInfo> notifications = new ArrayList<MBeanNotificationInfo>();
    notifications.add(new MBeanNotificationInfo(
            new String[] { "crawlStarted", "crawlEnding", "crawlPaused", "crawlResuming", PROG_STATS },
            this.getClass().getName() + ".notifications",
            "CrawlStatusListener events and progress statistics as " + "notifications"));
    MBeanNotificationInfo[] notificationsArray = new MBeanNotificationInfo[notifications.size()];
    notifications.toArray(notificationsArray);

    // Build the info object.
    OpenMBeanAttributeInfoSupport[] attributesArray = new OpenMBeanAttributeInfoSupport[attributes.size()];
    attributes.toArray(attributesArray);
    OpenMBeanOperationInfoSupport[] operationsArray = new OpenMBeanOperationInfoSupport[operations.size()];
    operations.toArray(operationsArray);
    return new OpenMBeanInfoSupport(this.getClass().getName(), "Current Crawl Job as OpenMBean",
            attributesArray, new OpenMBeanConstructorInfoSupport[] {}, operationsArray, notificationsArray);
}

From source file:com.cyberway.issue.crawler.Heritrix.java

/**
 * Build up the MBean info for Heritrix main.
 * @return Return created mbean info instance.
 *///from   w w  w. j  av  a2s.c o m
protected OpenMBeanInfoSupport buildMBeanInfo() {
    OpenMBeanAttributeInfoSupport[] attributes = new OpenMBeanAttributeInfoSupport[Heritrix.ATTRIBUTE_LIST
            .size()];
    OpenMBeanConstructorInfoSupport[] constructors = new OpenMBeanConstructorInfoSupport[1];
    OpenMBeanOperationInfoSupport[] operations = new OpenMBeanOperationInfoSupport[Heritrix.OPERATION_LIST
            .size()];
    MBeanNotificationInfo[] notifications = new MBeanNotificationInfo[0];

    // Attributes.
    attributes[0] = new OpenMBeanAttributeInfoSupport(Heritrix.STATUS_ATTR, "Short basic status message",
            SimpleType.STRING, true, false, false);
    // Attributes.
    attributes[1] = new OpenMBeanAttributeInfoSupport(Heritrix.VERSION_ATTR, "Heritrix version",
            SimpleType.STRING, true, false, false);
    // Attributes.
    attributes[2] = new OpenMBeanAttributeInfoSupport(Heritrix.ISRUNNING_ATTR, "Whether the crawler is running",
            SimpleType.BOOLEAN, true, false, false);
    // Attributes.
    attributes[3] = new OpenMBeanAttributeInfoSupport(Heritrix.ISCRAWLING_ATTR,
            "Whether the crawler is crawling", SimpleType.BOOLEAN, true, false, false);
    // Attributes.
    attributes[4] = new OpenMBeanAttributeInfoSupport(Heritrix.ALERTCOUNT_ATTR, "The number of alerts",
            SimpleType.INTEGER, true, false, false);
    // Attributes.
    attributes[5] = new OpenMBeanAttributeInfoSupport(Heritrix.NEWALERTCOUNT_ATTR, "The number of new alerts",
            SimpleType.INTEGER, true, false, false);
    // Attributes.
    attributes[6] = new OpenMBeanAttributeInfoSupport(Heritrix.CURRENTJOB_ATTR,
            "The name of the job currently being crawled", SimpleType.STRING, true, false, false);

    // Constructors.
    constructors[0] = new OpenMBeanConstructorInfoSupport("HeritrixOpenMBean",
            "Constructs Heritrix OpenMBean instance ", new OpenMBeanParameterInfoSupport[0]);

    // Operations.
    operations[0] = new OpenMBeanOperationInfoSupport(Heritrix.START_OPER, "Start Heritrix instance", null,
            SimpleType.VOID, MBeanOperationInfo.ACTION);

    operations[1] = new OpenMBeanOperationInfoSupport(Heritrix.STOP_OPER, "Stop Heritrix instance", null,
            SimpleType.VOID, MBeanOperationInfo.ACTION);

    OpenMBeanParameterInfo[] args = new OpenMBeanParameterInfoSupport[1];
    args[0] = new OpenMBeanParameterInfoSupport("threadName", "Name of thread to send interrupt",
            SimpleType.STRING);
    operations[2] = new OpenMBeanOperationInfoSupport(Heritrix.INTERRUPT_OPER,
            "Send thread an interrupt " + "(Used debugging)", args, SimpleType.STRING,
            MBeanOperationInfo.ACTION_INFO);

    operations[3] = new OpenMBeanOperationInfoSupport(Heritrix.START_CRAWLING_OPER,
            "Set Heritrix instance " + "into crawling mode", null, SimpleType.VOID, MBeanOperationInfo.ACTION);

    operations[4] = new OpenMBeanOperationInfoSupport(Heritrix.STOP_CRAWLING_OPER,
            "Unset Heritrix instance " + " crawling mode", null, SimpleType.VOID, MBeanOperationInfo.ACTION);

    args = new OpenMBeanParameterInfoSupport[4];
    args[0] = new OpenMBeanParameterInfoSupport("pathOrURL", "Path/URL to order or jar of order+seed",
            SimpleType.STRING);
    args[1] = new OpenMBeanParameterInfoSupport("name", "Basename for new job", SimpleType.STRING);
    args[2] = new OpenMBeanParameterInfoSupport("description", "Description to save with new job",
            SimpleType.STRING);
    args[3] = new OpenMBeanParameterInfoSupport("seeds", "Initial seed(s)", SimpleType.STRING);
    operations[5] = new OpenMBeanOperationInfoSupport(Heritrix.ADD_CRAWL_JOB_OPER, "Add new crawl job", args,
            SimpleType.STRING, MBeanOperationInfo.ACTION_INFO);

    args = new OpenMBeanParameterInfoSupport[4];
    args[0] = new OpenMBeanParameterInfoSupport("uidOrName", "Job UID or profile name", SimpleType.STRING);
    args[1] = new OpenMBeanParameterInfoSupport("name", "Basename for new job", SimpleType.STRING);
    args[2] = new OpenMBeanParameterInfoSupport("description", "Description to save with new job",
            SimpleType.STRING);
    args[3] = new OpenMBeanParameterInfoSupport("seeds", "Initial seed(s)", SimpleType.STRING);
    operations[6] = new OpenMBeanOperationInfoSupport(Heritrix.ADD_CRAWL_JOB_BASEDON_OPER,
            "Add a new crawl job based on passed Job UID or profile", args, SimpleType.STRING,
            MBeanOperationInfo.ACTION_INFO);

    args = new OpenMBeanParameterInfoSupport[1];
    args[0] = new OpenMBeanParameterInfoSupport("UID", "Job UID", SimpleType.STRING);
    operations[7] = new OpenMBeanOperationInfoSupport(DELETE_CRAWL_JOB_OPER, "Delete/stop this crawl job", args,
            SimpleType.VOID, MBeanOperationInfo.ACTION);

    args = new OpenMBeanParameterInfoSupport[1];
    args[0] = new OpenMBeanParameterInfoSupport("index", "Zero-based index into array of alerts",
            SimpleType.INTEGER);
    operations[8] = new OpenMBeanOperationInfoSupport(Heritrix.ALERT_OPER, "Return alert at passed index", args,
            SimpleType.STRING, MBeanOperationInfo.ACTION_INFO);

    try {
        this.jobCompositeType = new CompositeType("job", "Job attributes", JOB_KEYS,
                new String[] { "Job unique ID", "Job name", "Job status" },
                new OpenType[] { SimpleType.STRING, SimpleType.STRING, SimpleType.STRING });
        this.jobsTabularType = new TabularType("jobs", "List of jobs", this.jobCompositeType,
                new String[] { "uid" });
    } catch (OpenDataException e) {
        // This should never happen.
        throw new RuntimeException(e);
    }
    operations[9] = new OpenMBeanOperationInfoSupport(Heritrix.PENDING_JOBS_OPER,
            "List of pending jobs (or null if none)", null, this.jobsTabularType, MBeanOperationInfo.INFO);
    operations[10] = new OpenMBeanOperationInfoSupport(Heritrix.COMPLETED_JOBS_OPER,
            "List of completed jobs (or null if none)", null, this.jobsTabularType, MBeanOperationInfo.INFO);

    args = new OpenMBeanParameterInfoSupport[2];
    args[0] = new OpenMBeanParameterInfoSupport("uid", "Job unique ID", SimpleType.STRING);
    args[1] = new OpenMBeanParameterInfoSupport("name", "Report name (e.g. crawl-report, etc.)",
            SimpleType.STRING);
    operations[11] = new OpenMBeanOperationInfoSupport(Heritrix.CRAWLEND_REPORT_OPER, "Return crawl-end report",
            args, SimpleType.STRING, MBeanOperationInfo.ACTION_INFO);

    operations[12] = new OpenMBeanOperationInfoSupport(Heritrix.SHUTDOWN_OPER, "Shutdown container", null,
            SimpleType.VOID, MBeanOperationInfo.ACTION);

    args = new OpenMBeanParameterInfoSupport[2];
    args[0] = new OpenMBeanParameterInfoSupport("level", "Log level: e.g. SEVERE, WARNING, etc.",
            SimpleType.STRING);
    args[1] = new OpenMBeanParameterInfoSupport("message", "Log message", SimpleType.STRING);
    operations[13] = new OpenMBeanOperationInfoSupport(Heritrix.LOG_OPER, "Add a log message", args,
            SimpleType.VOID, MBeanOperationInfo.ACTION);

    operations[14] = new OpenMBeanOperationInfoSupport(Heritrix.DESTROY_OPER, "Destroy Heritrix instance", null,
            SimpleType.VOID, MBeanOperationInfo.ACTION);

    operations[15] = new OpenMBeanOperationInfoSupport(Heritrix.TERMINATE_CRAWL_JOB_OPER,
            "Returns false if no current job", null, SimpleType.BOOLEAN, MBeanOperationInfo.ACTION);

    operations[16] = new OpenMBeanOperationInfoSupport(Heritrix.REBIND_JNDI_OPER,
            "Rebinds this Heritrix with JNDI.", null, SimpleType.VOID, MBeanOperationInfo.ACTION);

    // Build the info object.
    return new OpenMBeanInfoSupport(this.getClass().getName(), "Heritrix Main OpenMBean", attributes,
            constructors, operations, notifications);
}

From source file:org.parallelj.launching.transport.jmx.DynamicLegacyProgram.java

/**
 * Default constructor/*from  ww  w. j  a  va 2 s. co m*/
 * 
 * @param adapterClass
 *            the Program's adapter type
 * @param adapterArgs
 */
public DynamicLegacyProgram(RemoteProgram remoteProgram) {
    this.remoteProgram = remoteProgram;

    // Get all available Commands
    this.cmds = JmxCommands.getCommands().values().toArray(new JmxCommand[] {});
    Arrays.sort(this.cmds);

    this.operations = new MBeanOperationInfo[this.cmds.length];
    int opIndex = 0;
    for (JmxCommand cmd : this.cmds) {
        final List<MBeanParameterInfo> parameters = new ArrayList<MBeanParameterInfo>();
        for (JmxOption option : JmxOptions.getOptions()) {
            // Options "id" and "args" doesn't have to be shown using Jmx
            final MBeanParameterInfo param = new MBeanParameterInfo(option.getName(), "java.lang.String",
                    option.getDescription());
            parameters.add(param);
        }
        final MBeanOperationInfo operation = new MBeanOperationInfo(cmd.getType(), cmd.getUsage(),
                ArrayUtils.addAll(parameters.toArray(new MBeanParameterInfo[] {}), createMBeanParameterInfos()),
                "java.lang.String", MBeanOperationInfo.INFO);
        operations[opIndex++] = operation;
    }
}