Example usage for javax.management MBeanServer registerMBean

List of usage examples for javax.management MBeanServer registerMBean

Introduction

In this page you can find the example usage for javax.management MBeanServer registerMBean.

Prototype

public ObjectInstance registerMBean(Object object, ObjectName name)
        throws InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException;

Source Link

Document

Registers a pre-existing object as an MBean with the MBean server.

Usage

From source file:com.enioka.jqm.tools.Loader.java

Loader(JobInstance job, JqmEngine engine, QueuePoller p, ClassloaderManager clm) {
    this.p = p;/*  ww  w  .j a va2  s  .  c om*/
    this.engine = engine;
    this.clm = clm;
    this.job = job;
    this.threadName = this.job.getJd().getApplicationName() + ";payload;" + this.job.getId();

    // JMX
    if (p != null && this.p.getEngine().loadJmxBeans) {
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
        try {
            name = new ObjectName(
                    "com.enioka.jqm:type=Node.Queue.JobInstance,Node=" + this.p.getEngine().getNode().getName()
                            + ",Queue=" + this.p.getQueue().getName() + ",name=" + this.job.getId());
            mbs.registerMBean(this, name);
        } catch (Exception e) {
            throw new JqmInitError("Could not create JMX bean for running job instance", e);
        }
    }
}

From source file:com.qwazr.server.GenericServer.java

private void startHttpServer(final ServerConfiguration.WebConnector connector,
        final ServletContextBuilder context, final AccessLogger accessLogger)
        throws IOException, ServletException, OperationsException, MBeanException {

    if (context == null || context.getServlets().isEmpty())
        return;/*  ww w . j a  v  a  2s  .c  om*/

    context.setIdentityManager(getIdentityManager(connector));

    contextAttributes.forEach(context::addServletContextAttribute);

    if (context.getIdentityManager() != null && !StringUtils.isEmpty(connector.authentication)) {
        if (hostnamePrincipalResolver != null)
            HostnameAuthenticationMechanism.register(context, hostnamePrincipalResolver);
        final LoginConfig loginConfig = Servlets.loginConfig(connector.realm);
        for (String authmethod : StringUtils.split(connector.authentication, ','))
            loginConfig.addLastAuthMethod(authmethod);
        context.setLoginConfig(loginConfig);
    }

    final DeploymentManager manager = servletContainer.addDeployment(context);
    manager.deploy();

    LOGGER.info(() -> "Start the connector " + configuration.listenAddress + ":" + connector.port);

    HttpHandler httpHandler = manager.start();
    final LogMetricsHandler logMetricsHandler = new LogMetricsHandler(httpHandler, configuration.listenAddress,
            connector.port, context.jmxName, accessLogger);
    deploymentManagers.add(manager);
    httpHandler = logMetricsHandler;

    final Undertow.Builder servletBuilder = Undertow.builder()
            .addHttpListener(connector.port, configuration.listenAddress)
            .setServerOption(UndertowOptions.NO_REQUEST_TIMEOUT, 10000)
            .setServerOption(UndertowOptions.RECORD_REQUEST_START_TIME, true)
            .setServerOption(UndertowOptions.ENABLE_STATISTICS, true)
            .setServerOption(UndertowOptions.ENABLE_HTTP2, true).setHandler(httpHandler);
    start(servletBuilder.build());

    // Register MBeans
    final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
    final Hashtable<String, String> props = new Hashtable<>();
    props.put("type", "connector");
    props.put("name", context.jmxName);
    final ObjectName name = new ObjectName(
            "com.qwazr.server." + serverCounter.incrementAndGet() + "." + context.jmxName, props);
    mbs.registerMBean(logMetricsHandler, name);
    registeredObjectNames.add(name);
    connectorsStatistics.add(logMetricsHandler);
}

From source file:org.opencastproject.kernel.security.TrustedHttpClientImpl.java

public void activate(ComponentContext cc) {
    logger.debug("activate");
    user = cc.getBundleContext().getProperty(DIGEST_AUTH_USER_KEY);
    pass = cc.getBundleContext().getProperty(DIGEST_AUTH_PASS_KEY);
    if (user == null || pass == null)
        throw new IllegalStateException("trusted communication is not properly configured");

    getRetryNumber(cc);/*from w  w w. j ava  2s  .c om*/
    getRetryBaseTime(cc);
    getRetryMaximumVariableTime(cc);

    // register with jmx
    try {
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
        ObjectName name;
        name = new ObjectName("org.opencastproject.security.api.TrustedHttpClient:type=HttpConnections");
        Object mbean = this;
        mbs.registerMBean(mbean, name);
    } catch (Exception e) {
        logger.warn("Unable to register {} as an mbean: {}", this, e);
    }
}

From source file:org.rhq.core.pc.measurement.MeasurementManager.java

public void initialize() {
    if (configuration.isStartManagementBean()) {
        MBeanServer server = ManagementFactory.getPlatformMBeanServer();
        try {//from   w ww.j a va 2s.co m
            server.registerMBean(this, new ObjectName(OBJECT_NAME));
        } catch (JMException e) {
            LOG.error("Unable to register MeasurementManagerMBean", e);
        }
    }

    this.inventoryManager = PluginContainer.getInstance().getInventoryManager();

    int threadPoolSize = configuration.getMeasurementCollectionThreadPoolSize();
    long collectionInitialDelaySecs = configuration.getMeasurementCollectionInitialDelay();

    if (configuration.isInsideAgent()) {
        this.collectorThreadPool = new ScheduledThreadPoolExecutor(threadPoolSize,
                new LoggingThreadFactory(COLLECTOR_THREAD_POOL_NAME, true));

        this.senderThreadPool = new ScheduledThreadPoolExecutor(2,
                new LoggingThreadFactory(SENDER_THREAD_POOL_NAME, true));

        this.measurementSenderRunner = new MeasurementSenderRunner(this);
        this.measurementCollectorRunner = new MeasurementCollectorRunner(this);

        // Schedule the measurement sender to send measurement reports periodically.
        this.senderThreadPool.scheduleAtFixedRate(measurementSenderRunner, collectionInitialDelaySecs, 30,
                TimeUnit.SECONDS);
        // Schedule the measurement collector to collect metrics periodically, whenever there are one or more
        // metrics due to be collected.
        this.collectorThreadPool.schedule(new MeasurementCollectionRequester(), collectionInitialDelaySecs,
                TimeUnit.SECONDS);

        // Load persistent measurement schedules from the InventoryManager and reconstitute them.
        Resource platform = PluginContainer.getInstance().getInventoryManager().getPlatform();
        reschedule(platform);
    }
}

From source file:com.enioka.jqm.tools.JqmEngine.java

/**
 * Starts the engine/*w  w w .  jav a  2 s. co m*/
 * 
 * @param nodeName
 *            the name of the node to start, as in the NODE table of the database.
 * @throws JqmInitError
 */
void start(String nodeName) {
    if (nodeName == null || nodeName.isEmpty()) {
        throw new IllegalArgumentException("nodeName cannot be null or empty");
    }

    // Set thread name - used in audits
    Thread.currentThread().setName("JQM engine;;" + nodeName);
    Helpers.setLogFileName(nodeName);

    // Log: we are starting...
    jqmlogger.info("JQM engine version " + this.getVersion() + " for node " + nodeName + " is starting");
    jqmlogger.info("Java version is " + System.getProperty("java.version") + ". JVM was made by "
            + System.getProperty("java.vendor") + " as " + System.getProperty("java.vm.name") + " version "
            + System.getProperty("java.vm.version"));

    // JNDI first - the engine itself uses JNDI to fetch its connections!
    Helpers.registerJndiIfNeeded();

    // Database connection
    EntityManager em = Helpers.getNewEm();

    // Node configuration is in the database
    node = em.createQuery("SELECT n FROM Node n WHERE n.name = :l", Node.class).setParameter("l", nodeName)
            .getSingleResult();

    // Check if double-start
    long toWait = (long) (1.1 * Long.parseLong(Helpers.getParameter("internalPollingPeriodMs", "60000", em)));
    if (node.getLastSeenAlive() != null
            && Calendar.getInstance().getTimeInMillis() - node.getLastSeenAlive().getTimeInMillis() <= toWait) {
        long r = Calendar.getInstance().getTimeInMillis() - node.getLastSeenAlive().getTimeInMillis();
        throw new JqmInitErrorTooSoon("Another engine named " + nodeName + " was running less than " + r / 1000
                + " seconds ago. Either stop the other node, or if it already stopped, please wait "
                + (toWait - r) / 1000 + " seconds");
    }

    // Prevent very quick multiple starts by immediately setting the keep-alive
    em.getTransaction().begin();
    node.setLastSeenAlive(Calendar.getInstance());
    em.getTransaction().commit();

    // Only start if the node configuration seems OK
    Helpers.checkConfiguration(nodeName, em);

    // Log parameters
    Helpers.dumpParameters(em, node);

    // Log level
    Helpers.setLogLevel(node.getRootLogLevel());

    // Log multicasting (& log4j stdout redirect)
    GlobalParameter gp1 = em
            .createQuery("SELECT g FROM GlobalParameter g WHERE g.key = :k", GlobalParameter.class)
            .setParameter("k", "logFilePerLaunch").getSingleResult();
    if ("true".equals(gp1.getValue()) || "both".equals(gp1.getValue())) {
        RollingFileAppender a = (RollingFileAppender) Logger.getRootLogger().getAppender("rollingfile");
        MultiplexPrintStream s = new MultiplexPrintStream(System.out, FilenameUtils.getFullPath(a.getFile()),
                "both".equals(gp1.getValue()));
        System.setOut(s);
        ((ConsoleAppender) Logger.getRootLogger().getAppender("consoleAppender"))
                .setWriter(new OutputStreamWriter(s));
        s = new MultiplexPrintStream(System.err, FilenameUtils.getFullPath(a.getFile()),
                "both".equals(gp1.getValue()));
        System.setErr(s);
    }

    // Remote JMX server
    if (node.getJmxRegistryPort() != null && node.getJmxServerPort() != null && node.getJmxRegistryPort() > 0
            && node.getJmxServerPort() > 0) {
        JmxAgent.registerAgent(node.getJmxRegistryPort(), node.getJmxServerPort(), node.getDns());
    } else {
        jqmlogger.info(
                "JMX remote listener will not be started as JMX registry port and JMX server port parameters are not both defined");
    }

    // Jetty
    this.server = new JettyServer();
    this.server.start(node, em);

    // JMX
    if (node.getJmxServerPort() != null && node.getJmxServerPort() > 0) {
        try {
            MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
            name = new ObjectName("com.enioka.jqm:type=Node,name=" + this.node.getName());
            mbs.registerMBean(this, name);
        } catch (Exception e) {
            throw new JqmInitError("Could not create JMX beans", e);
        }
        jqmlogger.info("JMX management bean for the engine was registered");
    } else {
        loadJmxBeans = false;
        jqmlogger.info("JMX management beans will not be loaded as JMX server port is null or zero");
    }

    // Security
    if (System.getSecurityManager() == null) {
        System.setSecurityManager(new SecurityManagerPayload());
    }
    jqmlogger.info("Security manager was registered");

    // Cleanup
    purgeDeadJobInstances(em, this.node);

    // Force Message EMF load
    em.createQuery("SELECT m FROM Message m WHERE 1=0", Message.class).getResultList();

    // Pollers
    syncPollers(em, this.node);
    jqmlogger.info("All required queues are now polled");

    // Internal poller (stop notifications, keepalive)
    intPoller = new InternalPoller(this);
    Thread t = new Thread(intPoller);
    t.start();

    // Kill notifications
    killHook = new SignalHandler(this);
    Runtime.getRuntime().addShutdownHook(killHook);

    // Done
    em.close();
    em = null;
    latestNodeStartedName = node.getName();
    jqmlogger.info("End of JQM engine initialization");
}

From source file:org.apache.ode.jbi.OdeLifeCycle.java

private void registerMBean() throws JBIException {
    ProcessAndInstanceManagementMBean pmapi = new ProcessAndInstanceManagementMBean(_ode._server, _ode._store);
    MBeanServer server = _ode.getContext().getMBeanServer();
    try {/* ww w.  j ava  2s.  co  m*/
        if (server != null) {
            _mbeanName = _ode.getContext().getMBeanNames().createCustomComponentMBeanName("Management");
            if (server.isRegistered(_mbeanName)) {
                server.unregisterMBean(_mbeanName);
            }
            server.registerMBean(pmapi, _mbeanName);
        }
    } catch (Exception e) {
        throw new JBIException(e);
    }
}

From source file:au.com.redboxresearchdata.fascinator.plugins.JsonHarvestQueueConsumer.java

public void run() {
    try {/* ww  w.  j  av  a 2s . com*/
        // Get a connection to the broker
        String brokerUrl = globalConfig.getString(ActiveMQConnectionFactory.DEFAULT_BROKER_BIND_URL,
                "messaging", "url");
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUrl);
        connection = connectionFactory.createConnection();

        session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

        consumer = session.createConsumer(session.createQueue(QUEUE_ID));
        consumer.setMessageListener(this);

        producer = session.createProducer(session.createTopic(EVENT_TOPIC_ID));
        producer.setDeliveryMode(DeliveryMode.PERSISTENT);

        connection.start();

        toolChainEntry = globalConfig.getString(DEFAULT_TOOL_CHAIN_QUEUE, "messaging", "toolChainQueue");

        failedJsonMap = new HashMap<String, HarvestItem>();
        failedJsonList = new ArrayList<String>();
        harvestRequests = new HashMap<String, HarvestRequest>();
        // registering managed bean...
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
        ObjectName mxbeanName = new ObjectName(
                "au.com.redboxresearchdata.fascinator.plugins:type=JsonHarvestQueue");
        mbs.registerMBean(this, mxbeanName);
        log.info("'{}' is running...", name);
    } catch (JMSException ex) {
        log.error("Error starting message thread!", ex);
    } catch (MalformedObjectNameException e) {
        log.error("Error configuring MBean, invalid name", e);
    } catch (InstanceAlreadyExistsException e) {
        log.error("Error configuring MBean, instance exists.", e);
    } catch (MBeanRegistrationException e) {
        log.error("Error registering MBean. ", e);
    } catch (NotCompliantMBeanException e) {
        log.error("Error configuring Mbean, non-compliant!", e);
    }
}

From source file:com.tc.server.TCServerImpl.java

protected void registerDSOMBeans(ServerManagementContext mgmtContext, ServerConfigurationContext configContext,
        TCDumper tcDumper, MBeanServer mBeanServer)
        throws NotCompliantMBeanException, InstanceAlreadyExistsException, MBeanRegistrationException {
    TerracottaOperatorEventHistoryProvider operatorEventHistoryProvider = this.dsoServer
            .getOperatorEventsHistoryProvider();
    DSOMBean dso = new DSO(mgmtContext, configContext, mBeanServer, operatorEventHistoryProvider);
    mBeanServer.registerMBean(dso, L2MBeanNames.DSO);
}

From source file:org.red5.server.winstone.WinstoneLoader.java

protected void registerJMX() {
    // register with jmx
    MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
    try {/*from   w w w  .j  av a  2 s . c o m*/
        ObjectName oName = new ObjectName("org.red5.server:type=WinstoneLoader");
        // check for existing registration before registering
        if (!mbs.isRegistered(oName)) {
            mbs.registerMBean(this, oName);
        } else {
            log.debug("ContextLoader is already registered in JMX");
        }
    } catch (Exception e) {
        log.warn("Error on jmx registration", e);
    }
}

From source file:com.norconex.collector.core.crawler.AbstractCrawler.java

private void registerMonitoringMbean(ICrawlDataStore crawlDataStore) {
    try {/*from  w w  w  .java2  s.c  o m*/
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
        ObjectName name = new ObjectName(
                "com.norconex.collector.http.crawler:type=" + getCrawlerConfig().getId());
        Monitoring mbean = new Monitoring(crawlDataStore);
        mbs.registerMBean(mbean, name);
    } catch (MalformedObjectNameException | InstanceAlreadyExistsException | MBeanRegistrationException
            | NotCompliantMBeanException e) {
        throw new CollectorException(e);
    }
}