All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.activemq.artemis.core.server.management.ManagementContext Maven / Gradle / Ivy

/**
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements. See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * 

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.activemq.artemis.core.server.management; import javax.management.NotCompliantMBeanException; import org.apache.activemq.artemis.core.config.JMXConnectorConfiguration; import org.apache.activemq.artemis.core.persistence.StorageManager; import org.apache.activemq.artemis.core.server.ServiceComponent; import org.apache.activemq.artemis.core.server.management.impl.HawtioSecurityControlImpl; import org.apache.activemq.artemis.spi.core.security.ActiveMQSecurityManager; public class ManagementContext implements ServiceComponent { private volatile boolean isStarted = false; private JMXAccessControlList accessControlList; private JMXConnectorConfiguration jmxConnectorConfiguration; private ManagementConnector mBeanServer; private ArtemisMBeanServerGuard guardHandler; private ActiveMQSecurityManager securityManager; public void init() { if (accessControlList != null) { //if we are configured then assume we want to use the guard so set the system property System.setProperty("javax.management.builder.initial", ArtemisMBeanServerBuilder.class.getCanonicalName()); guardHandler = new ArtemisMBeanServerGuard(); guardHandler.setJMXAccessControlList(accessControlList); ArtemisMBeanServerBuilder.setGuard(guardHandler); } } @Override public void start() throws Exception { if (isStarted) { return; } synchronized (this) { if (isStarted) { return; } isStarted = true; if (jmxConnectorConfiguration != null) { mBeanServer = new ManagementConnector(jmxConnectorConfiguration, securityManager); mBeanServer.start(); } } } @Override public void stop() throws Exception { if (!isStarted) { return; } synchronized (this) { if (!isStarted) { return; } isStarted = false; if (mBeanServer != null) { mBeanServer.stop(); } } } @Override public void stop(boolean shutdown) throws Exception { if (shutdown) { stop(); } } @Override public boolean isStarted() { return isStarted; } public void setAccessControlList(JMXAccessControlList accessControlList) { this.accessControlList = accessControlList; } public JMXAccessControlList getAccessControlList() { return accessControlList; } public void setJmxConnectorConfiguration(JMXConnectorConfiguration jmxConnectorConfiguration) { this.jmxConnectorConfiguration = jmxConnectorConfiguration; } public JMXConnectorConfiguration getJmxConnectorConfiguration() { return jmxConnectorConfiguration; } public HawtioSecurityControl getSecurityMBean(StorageManager storageManager) { try { return new HawtioSecurityControlImpl(guardHandler, storageManager); } catch (NotCompliantMBeanException e) { e.printStackTrace(); return null; } } public ArtemisMBeanServerGuard getArtemisMBeanServerGuard() { return guardHandler; } public void setSecurityManager(ActiveMQSecurityManager securityManager) { this.securityManager = securityManager; } public ActiveMQSecurityManager getSecurityManager() { return securityManager; } public ManagementConnector getManagementConnector() { return mBeanServer; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy