List of usage examples for javax.management.openmbean OpenMBeanOperationInfoSupport OpenMBeanOperationInfoSupport
public OpenMBeanOperationInfoSupport(String name, String description, OpenMBeanParameterInfo[] signature, OpenType<?> returnOpenType, int impact)
Constructs an OpenMBeanOperationInfoSupport instance, which describes the operation of a class of open MBeans, with the specified name , description , signature , returnOpenType and impact .
The signature array parameter is internally copied, so that subsequent changes to the array referenced by signature have no effect on this instance.
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 ww. j a va 2 s. c om*/ */ 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.admin.CrawlJob.java
protected void addBdbjeOperations(final List<OpenMBeanOperationInfo> operations, final List<MBeanOperationInfo> bdbjeOperations, final List<String> bdbjeNamesToAdd) { for (MBeanOperationInfo info : bdbjeOperations) { if (bdbjeNamesToAdd.contains(info.getName())) { OpenMBeanOperationInfo omboi = null; if (info.getName().equals(OP_DB_STAT)) { // Db stats needs special handling. The published // signature is wrong and its return type is awkward. // Handle it. omboi = JmxUtils.convertToOpenMBeanOperation(info, null, SimpleType.STRING); MBeanParameterInfo[] params = omboi.getSignature(); OpenMBeanParameterInfo[] args = new OpenMBeanParameterInfoSupport[params.length + 1]; for (int ii = 0; ii < params.length; ii++) { args[ii] = (OpenMBeanParameterInfo) params[ii]; }//from www . j a va2 s. c om args[params.length] = new OpenMBeanParameterInfoSupport("name", "Database name", SimpleType.STRING); omboi = new OpenMBeanOperationInfoSupport(omboi.getName(), omboi.getDescription(), args, omboi.getReturnOpenType(), omboi.getImpact()); } else { omboi = JmxUtils.convertToOpenMBeanOperation(info); } operations.add(omboi); } } }
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 a v a 2s . com 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.eclipse.gyrex.monitoring.internal.mbeans.MetricSetMBean.java
private void initialize() { final List<OpenMBeanAttributeInfoSupport> attributes = new ArrayList<OpenMBeanAttributeInfoSupport>(); final OpenMBeanConstructorInfoSupport[] constructors = new OpenMBeanConstructorInfoSupport[0]; final List<OpenMBeanOperationInfoSupport> operations = new ArrayList<OpenMBeanOperationInfoSupport>(1); final MBeanNotificationInfo[] notifications = new MBeanNotificationInfo[0]; // common attribute attributes//from w w w.j a v a 2 s. c om .add(new OpenMBeanAttributeInfoSupport(ID, "MetricSet Id", SimpleType.STRING, true, false, false)); attributes.add(new OpenMBeanAttributeInfoSupport(DESCRIPTION, "MetricSet Description", SimpleType.STRING, true, false, false)); // service property attributes try { final String[] propertyTypeNames = new String[] { "key", "value" }; propertyType = new CompositeType("property", "A property with name and value.", propertyTypeNames, new String[] { "Name", "Value" }, new OpenType[] { SimpleType.STRING, SimpleType.STRING }); propertyTableType = new TabularType(PROPERTIES, "A lst of properties.", propertyType, new String[] { "key" }); attributes.add(new OpenMBeanAttributeInfoSupport(PROPERTIES, "MetricSet Properties", propertyTableType, true, false, false)); // pre-build service properties properties = new TabularDataSupport(propertyTableType); final String[] propertyKeys = reference.getPropertyKeys(); for (final String serviceProperty : propertyKeys) { if (serviceProperty.startsWith("gyrex.") || serviceProperty.equals(Constants.SERVICE_DESCRIPTION) || serviceProperty.equals(Constants.SERVICE_VENDOR)) { final Object value = reference.getProperty(serviceProperty); if (value == null) { continue; } if (isConvertibleToString(value.getClass())) { final Object[] values = { serviceProperty, String.valueOf(value) }; properties.put(new CompositeDataSupport(propertyType, propertyTypeNames, values)); } } } } catch (final OpenDataException e) { attributes.add(new OpenMBeanAttributeInfoSupport("propertiesError", "Exception occured while determining properties. " + e.toString(), SimpleType.STRING, true, false, false)); } // metrics final List<BaseMetric> metrics = metricSet.getMetrics(); metricTypesByAttributeName = new HashMap<String, CompositeType>(metrics.size()); metricByAttributeName = new HashMap<String, BaseMetric>(metrics.size()); for (final BaseMetric metric : metrics) { final String attributeName = StringUtils.removeStart(metric.getId(), metricSet.getId() + "."); try { final CompositeType type = getType(metric); if (type != null) { metricTypesByAttributeName.put(attributeName, type); metricByAttributeName.put(attributeName, metric); attributes.add(new OpenMBeanAttributeInfoSupport(attributeName, metric.getId(), type, true, false, false)); } } catch (final OpenDataException e) { attributes.add(new OpenMBeanAttributeInfoSupport(attributeName + "Error", "Exception occured while determining properties. " + e.toString(), SimpleType.STRING, true, false, false)); } } // reset operation for metric operations.add(new OpenMBeanOperationInfoSupport(RESET_STATS, "reset the metric statistics", null, SimpleType.VOID, MBeanOperationInfo.ACTION)); // build the info beanInfo = new OpenMBeanInfoSupport(this.getClass().getName(), metricSet.getDescription(), attributes.toArray(new OpenMBeanAttributeInfoSupport[attributes.size()]), constructors, operations.toArray(new OpenMBeanOperationInfoSupport[operations.size()]), notifications); }