+++ /dev/null
-/*
- * 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.catalina.mbeans;
-
-import java.util.ArrayList;
-
-import javax.management.MBeanException;
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
-import javax.management.RuntimeOperationsException;
-
-import org.apache.catalina.Context;
-import org.apache.catalina.deploy.ContextEnvironment;
-import org.apache.catalina.deploy.ContextResource;
-import org.apache.catalina.deploy.ContextResourceLink;
-import org.apache.catalina.deploy.NamingResources;
-import org.apache.tomcat.util.modeler.BaseModelMBean;
-import org.apache.tomcat.util.modeler.ManagedBean;
-import org.apache.tomcat.util.modeler.Registry;
-
-/**
- * <p>A <strong>ModelMBean</strong> implementation for the
- * <code>org.apache.catalina.core.StandardDefaultContext</code> component.</p>
- *
- * @author Amy Roh
- * @version $Revision$ $Date$
- */
-
-public class DefaultContextMBean extends BaseModelMBean {
-
-
- // ----------------------------------------------------------- Constructors
-
-
- /**
- * Construct a <code>ModelMBean</code> with default
- * <code>ModelMBeanInfo</code> information.
- *
- * @exception MBeanException if the initializer of an object
- * throws an exception
- * @exception RuntimeOperationsException if an IllegalArgumentException
- * occurs
- */
- public DefaultContextMBean()
- throws MBeanException, RuntimeOperationsException {
-
- super();
-
- }
-
-
- // ----------------------------------------------------- Instance Variables
-
-
- /**
- * The configuration information registry for our managed beans.
- */
- protected Registry registry = MBeanUtils.createRegistry();
-
- /**
- * The <code>ManagedBean</code> information describing this MBean.
- */
- protected ManagedBean managed =
- registry.findManagedBean("DefaultContext");
-
-
- // ------------------------------------------------------------- Attributes
-
-
- /**
- * Return the naming resources associated with this web application.
- */
- private NamingResources getNamingResources() {
-
- return ((Context)this.resource).getNamingResources();
-
- }
-
-
- /**
- * Return the MBean Names of the set of defined environment entries for
- * this web application
- */
- public String[] getEnvironments() {
- ContextEnvironment[] envs = getNamingResources().findEnvironments();
- ArrayList results = new ArrayList();
- for (int i = 0; i < envs.length; i++) {
- try {
- ObjectName oname =
- MBeanUtils.createObjectName(managed.getDomain(), envs[i]);
- results.add(oname.toString());
- } catch (MalformedObjectNameException e) {
- IllegalArgumentException iae = new IllegalArgumentException
- ("Cannot create object name for environment " + envs[i]);
- iae.initCause(e);
- throw iae;
- }
- }
- return ((String[]) results.toArray(new String[results.size()]));
-
- }
-
-
- /**
- * Return the MBean Names of all the defined resource references for this
- * application.
- */
- public String[] getResources() {
-
- ContextResource[] resources = getNamingResources().findResources();
- ArrayList results = new ArrayList();
- for (int i = 0; i < resources.length; i++) {
- try {
- ObjectName oname =
- MBeanUtils.createObjectName(managed.getDomain(), resources[i]);
- results.add(oname.toString());
- } catch (MalformedObjectNameException e) {
- IllegalArgumentException iae = new IllegalArgumentException
- ("Cannot create object name for resource " + resources[i]);
- iae.initCause(e);
- throw iae;
- }
- }
- return ((String[]) results.toArray(new String[results.size()]));
-
- }
-
-
- /**
- * Return the MBean Names of all the defined resource links for this
- * application
- */
- public String[] getResourceLinks() {
-
- ContextResourceLink[] links = getNamingResources().findResourceLinks();
- ArrayList results = new ArrayList();
- for (int i = 0; i < links.length; i++) {
- try {
- ObjectName oname =
- MBeanUtils.createObjectName(managed.getDomain(), links[i]);
- results.add(oname.toString());
- } catch (MalformedObjectNameException e) {
- IllegalArgumentException iae = new IllegalArgumentException
- ("Cannot create object name for resource " + links[i]);
- iae.initCause(e);
- throw iae;
- }
- }
- return ((String[]) results.toArray(new String[results.size()]));
-
- }
-
- // ------------------------------------------------------------- Operations
-
-
- /**
- * Add an environment entry for this web application.
- *
- * @param envName New environment entry name
- */
- public String addEnvironment(String envName, String type)
- throws MalformedObjectNameException {
-
- NamingResources nresources = getNamingResources();
- if (nresources == null) {
- return null;
- }
- ContextEnvironment env = nresources.findEnvironment(envName);
- if (env != null) {
- throw new IllegalArgumentException
- ("Invalid environment name - already exists '" + envName + "'");
- }
- env = new ContextEnvironment();
- env.setName(envName);
- env.setType(type);
- nresources.addEnvironment(env);
-
- // Return the corresponding MBean name
- ManagedBean managed = registry.findManagedBean("ContextEnvironment");
- ObjectName oname =
- MBeanUtils.createObjectName(managed.getDomain(), env);
- return (oname.toString());
-
- }
-
-
- /**
- * Add a resource reference for this web application.
- *
- * @param resourceName New resource reference name
- */
- public String addResource(String resourceName, String type)
- throws MalformedObjectNameException {
-
- NamingResources nresources = getNamingResources();
- if (nresources == null) {
- return null;
- }
- ContextResource resource = nresources.findResource(resourceName);
- if (resource != null) {
- throw new IllegalArgumentException
- ("Invalid resource name - already exists'" + resourceName + "'");
- }
- resource = new ContextResource();
- resource.setName(resourceName);
- resource.setType(type);
- nresources.addResource(resource);
-
- // Return the corresponding MBean name
- ManagedBean managed = registry.findManagedBean("ContextResource");
- ObjectName oname =
- MBeanUtils.createObjectName(managed.getDomain(), resource);
-
- return (oname.toString());
- }
-
-
- /**
- * Add a resource link for this web application.
- *
- * @param resourceLinkName New resource link name
- */
- public String addResourceLink(String resourceLinkName, String global,
- String name, String type) throws MalformedObjectNameException {
-
- NamingResources nresources = getNamingResources();
- if (nresources == null) {
- return null;
- }
- ContextResourceLink resourceLink =
- nresources.findResourceLink(resourceLinkName);
- if (resourceLink != null) {
- throw new IllegalArgumentException
- ("Invalid resource link name - already exists'" +
- resourceLinkName + "'");
- }
- resourceLink = new ContextResourceLink();
- resourceLink.setGlobal(global);
- resourceLink.setName(resourceLinkName);
- resourceLink.setType(type);
- nresources.addResourceLink(resourceLink);
-
- // Return the corresponding MBean name
- ManagedBean managed = registry.findManagedBean("ContextResourceLink");
- ObjectName oname =
- MBeanUtils.createObjectName(managed.getDomain(), resourceLink);
- return (oname.toString());
- }
-
-
- /**
- * Remove any environment entry with the specified name.
- *
- * @param envName Name of the environment entry to remove
- */
- public void removeEnvironment(String envName) {
-
- NamingResources nresources = getNamingResources();
- if (nresources == null) {
- return;
- }
- ContextEnvironment env = nresources.findEnvironment(envName);
- if (env == null) {
- throw new IllegalArgumentException
- ("Invalid environment name '" + envName + "'");
- }
- nresources.removeEnvironment(envName);
-
- }
-
-
- /**
- * Remove any resource reference with the specified name.
- *
- * @param resourceName Name of the resource reference to remove
- */
- public void removeResource(String resourceName) {
-
- resourceName = ObjectName.unquote(resourceName);
- NamingResources nresources = getNamingResources();
- if (nresources == null) {
- return;
- }
- ContextResource resource = nresources.findResource(resourceName);
- if (resource == null) {
- throw new IllegalArgumentException
- ("Invalid resource name '" + resourceName + "'");
- }
- nresources.removeResource(resourceName);
- }
-
-
- /**
- * Remove any resource link with the specified name.
- *
- * @param resourceLinkName Name of the resource reference to remove
- */
- public void removeResourceLink(String resourceLinkName) {
-
- resourceLinkName = ObjectName.unquote(resourceLinkName);
- NamingResources nresources = getNamingResources();
- if (nresources == null) {
- return;
- }
- ContextResourceLink resource = nresources.findResourceLink(resourceLinkName);
- if (resource == null) {
- throw new IllegalArgumentException
- ("Invalid resource name '" + resourceLinkName + "'");
- }
- nresources.removeResourceLink(resourceLinkName);
- }
-
-
-}
} catch (Exception e) {
log.error("Exception handling Container property change", e);
}
- }/* else if (event.getSource() instanceof DefaultContext) {
- try {
- processDefaultContextPropertyChange
- ((DefaultContext) event.getSource(),
- event.getPropertyName(),
- event.getOldValue(),
- event.getNewValue());
- } catch (Exception e) {
- log.error("Exception handling DefaultContext property change", e);
- }
- }*/ else if (event.getSource() instanceof NamingResources) {
+ } else if (event.getSource() instanceof NamingResources) {
try {
processNamingResourcesPropertyChange
((NamingResources) event.getSource(),
/**
- * Create the MBeans for the specified DefaultContext and its nested components.
- *
- * @param dcontext DefaultContext for which to create MBeans
- *
- * @exception Exception if an exception is thrown during MBean creation
- */
- /*
- protected void createMBeans(DefaultContext dcontext) throws Exception {
-
- // Create the MBean for the DefaultContext itself
- if (log.isDebugEnabled())
- log.debug("Creating MBean for DefaultContext " + dcontext);
- MBeanUtils.createMBean(dcontext);
-
- dcontext.addPropertyChangeListener(this);
-
- // Create the MBeans for the associated nested components
- Loader dLoader = dcontext.getLoader();
- if (dLoader != null) {
- if (log.isDebugEnabled())
- log.debug("Creating MBean for Loader " + dLoader);
- //MBeanUtils.createMBean(dLoader);
- }
-
- Manager dManager = dcontext.getManager();
- if (dManager != null) {
- if (log.isDebugEnabled())
- log.debug("Creating MBean for Manager " + dManager);
- //MBeanUtils.createMBean(dManager);
- }
-
- // Create the MBeans for the NamingResources (if any)
- NamingResources resources = dcontext.getNamingResources();
- createMBeans(resources);
-
- }
- */
-
-
- /**
* Create the MBeans for the specified Engine and its nested components.
*
* @param engine Engine for which to create MBeans
/**
- * Deregister the MBeans for the specified DefaultContext and its nested
- * components.
- *
- * @param dcontext DefaultContext for which to deregister MBeans
- *
- * @exception Exception if an exception is thrown during MBean destruction
- */
- /*
- protected void destroyMBeans(DefaultContext dcontext) throws Exception {
-
- Manager dManager = dcontext.getManager();
- if (dManager != null) {
- if (log.isDebugEnabled())
- log.debug("Destroying MBean for Manager " + dManager);
- //MBeanUtils.destroyMBean(dManager);
- }
-
- Loader dLoader = dcontext.getLoader();
- if (dLoader != null) {
- if (log.isDebugEnabled())
- log.debug("Destroying MBean for Loader " + dLoader);
- //MBeanUtils.destroyMBean(dLoader);
- }
-
- // Destroy the MBeans for the NamingResources (if any)
- NamingResources resources = dcontext.getNamingResources();
- if (resources != null) {
- destroyMBeans(resources);
- }
-
- // deregister the MBean for the DefaultContext itself
- if (log.isDebugEnabled())
- log.debug("Destroying MBean for Context " + dcontext);
- MBeanUtils.destroyMBean(dcontext);
- dcontext.removePropertyChangeListener(this);
-
- }
- */
-
-
- /**
* Deregister the MBeans for the specified Engine and its nested
* components.
*
/**
- * Process a property change event on a DefaultContext.
- *
- * @param defaultContext The DefaultContext on which this event occurred
- * @param propertyName The name of the property that changed
- * @param oldValue The previous value (may be <code>null</code>)
- * @param newValue The new value (may be <code>null</code>)
- *
- * @exception Exception if an exception is thrown
- */
- /*
- protected void processDefaultContextPropertyChange(DefaultContext defaultContext,
- String propertyName,
- Object oldValue,
- Object newValue)
- throws Exception {
-
- if (log.isTraceEnabled()) {
- log.trace("propertyChange[defaultContext=" + defaultContext +
- ",propertyName=" + propertyName +
- ",oldValue=" + oldValue +
- ",newValue=" + newValue + "]");
- }
- if ("loader".equals(propertyName)) {
- if (oldValue != null) {
- if (log.isDebugEnabled()) {
- log.debug("Removing MBean for Loader " + oldValue);
- }
- MBeanUtils.destroyMBean((Loader) oldValue);
- }
- if (newValue != null) {
- if (log.isDebugEnabled()) {
- log.debug("Creating MBean for Loader " + newValue);
- }
- MBeanUtils.createMBean((Loader) newValue);
- }
- } else if ("logger".equals(propertyName)) {
- if (oldValue != null) {
- if (log.isDebugEnabled()) {
- log.debug("Removing MBean for Logger " + oldValue);
- }
- //MBeanUtils.destroyMBean((Logger) oldValue);
- }
- if (newValue != null) {
- if (log.isDebugEnabled()) {
- log.debug("Creating MBean for Logger " + newValue);
- }
- //MBeanUtils.createMBean((Logger) newValue);
- }
- } else if ("manager".equals(propertyName)) {
- if (oldValue != null) {
- if (log.isDebugEnabled()) {
- log.debug("Removing MBean for Manager " + oldValue);
- }
- MBeanUtils.destroyMBean((Manager) oldValue);
- }
- if (newValue != null) {
- if (log.isDebugEnabled()) {
- log.debug("Creating MBean for Manager " + newValue);
- }
- MBeanUtils.createMBean((Manager) newValue);
- }
- } else if ("realm".equals(propertyName)) {
- if (oldValue != null) {
-// if (log.isDebugEnabled()) {
-// log.debug("Removing MBean for Realm " + oldValue);
-// }
-// //MBeanUtils.destroyMBean((Realm) oldValue);
- }
- if (newValue != null) {
-// if (log.isDebugEnabled()) {
-// log.debug("Creating MBean for Realm " + newValue);
-// }
-// //MBeanUtils.createMBean((Realm) newValue);
- }
- } else if ("service".equals(propertyName)) {
- if (oldValue != null) {
- destroyMBeans((Service) oldValue);
- }
- if (newValue != null) {
- createMBeans((Service) newValue);
- }
- }
-
- }*/
-
-
- /**
* Process the removal of a child Container from a parent Container.
*
* @param parent Parent container