| /* |
| * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0, which is available at |
| * http://www.eclipse.org/legal/epl-2.0. |
| * |
| * This Source Code may also be made available under the following Secondary |
| * Licenses when the conditions for such availability set forth in the |
| * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, |
| * version 2 with the GNU Classpath Exception, which is available at |
| * https://www.gnu.org/software/classpath/license.html. |
| * |
| * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 |
| */ |
| |
| package com.sun.enterprise.admin.monitor.registry; |
| //import com.sun.enterprise.config.serverbeans.*; |
| import java.util.HashMap; |
| |
| /** |
| * MonitoredObjectType represents the type of a monitored object. Many of |
| * monitored objects have same properties, even while they monitor different |
| * user objects. For example - application and standalone ejb module are both |
| * nothing more than containers of other objects -- application contains web |
| * module and ejb modules, whereas standalone ejb module contains beans of |
| * various types. This object facilitates use of same GenericMonitorMBean as |
| * MBean for both of them, but still distinguishes them. |
| * |
| * @see com.iplanet.ias.admin.monitor.GenericMonitorMBean |
| * @author Originally authored by Abhijit Kumar |
| * @author Copied from S1AS 7.0 source and modified by Shreedhar Ganapathy |
| */ |
| public class MonitoredObjectType { |
| |
| /** |
| * A map to store all objects of type MonitoredObjectType using their string |
| * representation as key. |
| */ |
| private static final HashMap objectMap = new HashMap(); |
| /** |
| * to be able to initialize to a non-valid type |
| */ |
| public static final MonitoredObjectType NONE = new MonitoredObjectType("none", true); |
| /** |
| * ROOT MonitoredObject - singleton |
| */ |
| public static final MonitoredObjectType ROOT = new MonitoredObjectType("root", true); |
| /** |
| * Parent of all applications and modules and other children - singleton |
| */ |
| public static final MonitoredObjectType APPLICATIONS = new MonitoredObjectType("applications", true); |
| /** |
| * MonitoredObjectType for any deployed application - multiple |
| */ |
| public static final MonitoredObjectType APPLICATION = new MonitoredObjectType("application"); |
| /** |
| * An ejb module within an application - multiple |
| */ |
| public static final MonitoredObjectType EJBMODULE = new MonitoredObjectType("ejb-module"); |
| /** |
| * A web module within an application - multiple |
| */ |
| public static final MonitoredObjectType WEBMODULE = new MonitoredObjectType("web-module"); |
| /** |
| * A standalone ejb module - multiple |
| */ |
| public static final MonitoredObjectType STANDALONE_EJBMODULE = new MonitoredObjectType("standalone-ejb-module"); |
| /** |
| * A standalone web module - multiple |
| */ |
| public static final MonitoredObjectType STANDALONE_WEBMODULE = new MonitoredObjectType("standalone-web-module"); |
| /** |
| * A stateless session bean - multiple |
| */ |
| public static final MonitoredObjectType STATELESS_BEAN = new MonitoredObjectType("stateless-session-bean"); |
| /** |
| * A stateful session bean - multiple |
| */ |
| public static final MonitoredObjectType STATEFUL_BEAN = new MonitoredObjectType("stateful-session-bean"); |
| /** |
| * A entity session bean - multiple |
| */ |
| public static final MonitoredObjectType ENTITY_BEAN = new MonitoredObjectType("entity-bean"); |
| /** |
| * A message driven bean - multiple |
| */ |
| public static final MonitoredObjectType MESSAGE_DRIVEN_BEAN = new MonitoredObjectType("message-driven-bean"); |
| /** |
| * An ejb pool - one per ejb |
| */ |
| public static final MonitoredObjectType BEAN_POOL = new MonitoredObjectType("bean-pool", true); |
| /** |
| * An ejb cache - one per ejb |
| */ |
| public static final MonitoredObjectType BEAN_CACHE = new MonitoredObjectType("bean-cache", true); |
| /* |
| * An ejb method - multiple |
| */ |
| public static final MonitoredObjectType BEAN_METHOD = new MonitoredObjectType("bean-method"); |
| /* |
| * All ejb methods - one per ejb |
| */ |
| public static final MonitoredObjectType BEAN_METHODS = new MonitoredObjectType("bean-methods", true); |
| /** |
| * A servlet - multiple |
| */ |
| public static final MonitoredObjectType SERVLET = new MonitoredObjectType("servlet"); |
| /** |
| * Http Service node - singleton |
| */ |
| public static final MonitoredObjectType HTTP_SERVICE = new MonitoredObjectType("http-service", true); |
| /** |
| * Virtual server - multiple |
| */ |
| public static final MonitoredObjectType VIRTUAL_SERVER = new MonitoredObjectType("virtual-server"); |
| /** |
| * webmodule-virtualserver, fix for 6172666 |
| */ |
| public static final MonitoredObjectType WEBAPP_VIRTUAL_SERVER = new MonitoredObjectType("webmodule-virtual-server"); |
| /** |
| * Http Listener - multiple |
| */ |
| public static final MonitoredObjectType HTTP_LISTENER = new MonitoredObjectType("http-listener"); |
| /** |
| * JVM - singleton |
| */ |
| public static final MonitoredObjectType JVM = new MonitoredObjectType("jvm", true); |
| /** |
| * Transaction service - singleton |
| */ |
| public static final MonitoredObjectType TRANSACTION_SERVICE = new MonitoredObjectType("transaction-service", true); |
| /** |
| * Thread pools - singleton |
| */ |
| public static final MonitoredObjectType THREAD_POOLS = new MonitoredObjectType("thread-pools", true); |
| /** |
| * A named thead pool - multiple |
| */ |
| public static final MonitoredObjectType THREAD_POOL = new MonitoredObjectType("thread-pool"); |
| /** |
| * ORB - singleton |
| */ |
| public static final MonitoredObjectType ORB = new MonitoredObjectType("orb", true); |
| /** |
| * Connection Managers - singleton |
| */ |
| public static final MonitoredObjectType CONNECTION_MANAGERS = new MonitoredObjectType("connection-managers", true); |
| /** |
| * A Connection Manager for orb - multiple |
| */ |
| public static final MonitoredObjectType CONNECTION_MANAGER = new MonitoredObjectType("connection-manager", true); |
| /** |
| * All the monitorable resources - singleton |
| */ |
| public static final MonitoredObjectType RESOURCES = new MonitoredObjectType("resources", true); |
| /** |
| * A monitorable jdbc connection pool - multiple |
| */ |
| public static final MonitoredObjectType JDBC_CONN_POOL = new MonitoredObjectType("jdbc-connection-pool"); |
| /** |
| * A monitorable connector connection pool - multiple |
| */ |
| public static final MonitoredObjectType CONNECTOR_CONN_POOL = new MonitoredObjectType("connector-connection-pool"); |
| /** |
| * Any Web Container Element -- not used in hierarchy -- mainly for |
| * notification |
| */ |
| public static final MonitoredObjectType WEB_COMPONENT = new MonitoredObjectType("web-component"); |
| /** |
| * Jndi monitoring |
| */ |
| public static final MonitoredObjectType JNDI = new MonitoredObjectType("jndi", true); |
| // for connector monitoring |
| public static final MonitoredObjectType CONNECTOR_SERVICE = new MonitoredObjectType("connector-service", true); |
| public static final MonitoredObjectType CONNECTOR_MODULE = new MonitoredObjectType("connector-module"); |
| public static final MonitoredObjectType STANDALONE_CONNECTOR_MODULE = new MonitoredObjectType("standalone-connector-module"); |
| public static final MonitoredObjectType CONNECTOR_WORKMGMT = new MonitoredObjectType("work-management", true); |
| public static final MonitoredObjectType JMS_SERVICE = new MonitoredObjectType("jms-service", true); |
| public static final MonitoredObjectType CONNECTION_FACTORIES = new MonitoredObjectType("connection-factories", true); |
| public static final MonitoredObjectType CONNECTION_FACTORY = new MonitoredObjectType("connection-factory"); |
| public static final MonitoredObjectType CONNECTION_POOLS = new MonitoredObjectType("connection-pools", true); |
| // for PWC Monitoring |
| public static final MonitoredObjectType CONNECTION_QUEUE = new MonitoredObjectType("connection-queue", true); |
| public static final MonitoredObjectType DNS = new MonitoredObjectType("dns", true); |
| public static final MonitoredObjectType KEEP_ALIVE = new MonitoredObjectType("keep-alive", true); |
| public static final MonitoredObjectType PWC_THREAD_POOL = new MonitoredObjectType("pwc-thread-pool", true); |
| public static final MonitoredObjectType FILE_CACHE = new MonitoredObjectType("file-cache", true); |
| public static final MonitoredObjectType REQUEST = new MonitoredObjectType("request", true); |
| // for StatefulSessionStore Monitoring |
| public static final MonitoredObjectType SESSION_STORE = new MonitoredObjectType("stateful-session-store", true); |
| // for Timer Monitoring |
| public static final MonitoredObjectType TIMERS = new MonitoredObjectType("timers", true); |
| // for JVM1.5 Monitoring |
| public static final MonitoredObjectType JVM_COMPILATION = new MonitoredObjectType("compilation-system", true); |
| public static final MonitoredObjectType JVM_CLASSLOADING = new MonitoredObjectType("class-loading-system", true); |
| public static final MonitoredObjectType JVM_OS = new MonitoredObjectType("operating-system", true); |
| public static final MonitoredObjectType JVM_RUNTIME = new MonitoredObjectType("runtime", true); |
| public static final MonitoredObjectType JVM_GCS = new MonitoredObjectType("garbage-collectors", true); |
| public static final MonitoredObjectType JVM_GC = new MonitoredObjectType("garbage-collector"); |
| public static final MonitoredObjectType JVM_MEMORY = new MonitoredObjectType("memory", true); |
| public static final MonitoredObjectType JVM_THREAD = new MonitoredObjectType("thread-system", true); |
| public static final MonitoredObjectType JVM_THREAD_INFO = new MonitoredObjectType("threadinfo"); |
| /** |
| * A web service endpoint with in an ejb or web module - multiple |
| */ |
| public static final MonitoredObjectType WEBSERVICE_ENDPOINT = |
| new MonitoredObjectType("webservice-endpoint"); |
| /** |
| * value of this object as a string |
| */ |
| private String typeName; |
| /** |
| * Denotes whether this type allows more than one instance at any level. |
| */ |
| private boolean isSingleton; |
| |
| /** |
| * Creates a new instance of MonitoredObjectType using specified string type |
| * |
| * @param type string representing the name of monitored object type |
| */ |
| private MonitoredObjectType(String type) { |
| this(type, false); |
| } |
| |
| /** |
| * Creates a new instance of MonitoredObjectType using specified string type |
| * and specified flag for singleton |
| * |
| * @param type string representing the name of monitored object type |
| * @param isSingleton denotes whether this type of monitored object has only |
| * one instance (in its context) |
| */ |
| private MonitoredObjectType(String type, boolean isSingleton) { |
| this.typeName = type; |
| this.isSingleton = isSingleton; |
| objectMap.put(this.typeName, this); |
| } |
| |
| /** |
| * Get type of this "MonitoredObjectType" as string |
| * |
| * @return Monitored object type as string |
| */ |
| public String getTypeName() { |
| return typeName; |
| } |
| |
| /** |
| * Is instance of this type of MonitorMBean singleton. For example, there |
| * can only be one pool for every stateless session bean, so a |
| * MonitoredObjectType of type MonitoredObjectType.BEAN_POOL is a singleton. |
| * |
| * @return true if this type of object can have atmost one instance within |
| * its context, false otherwise. |
| */ |
| public boolean isSingleton() { |
| return isSingleton; |
| } |
| |
| /** |
| * A string representation. The return value of this method is same as that |
| * of method getTypeName. |
| * |
| * @return A string representation of this MonitoredObjectType |
| */ |
| @Override |
| public String toString() { |
| return typeName; |
| } |
| |
| /** |
| * Get a MonitoredObjectType instance for the specified string type. |
| * |
| * @param typeName string representing MonitoredObjectType |
| * @throws IllegalArgumentException if the specified type name is not known. |
| */ |
| public static MonitoredObjectType getMonitoredObjectType(String typeName) { |
| MonitoredObjectType type = getMonitoredObjectTypeOrNull(typeName); |
| if (type == null) { |
| //String msg = localStrings.getString( "admin.monitor.unknown_type_name", typeName ); |
| String msg = "admin.monitor.unknown_type_name:" + typeName; |
| throw new IllegalArgumentException(msg); |
| } |
| return type; |
| } |
| |
| /** |
| * Get a MonitoredObjectType instance for the specified string type. If the |
| * specified type is not known, the method returns null. |
| * |
| * @param typeName string representing MonitoredObjectType |
| */ |
| static MonitoredObjectType getMonitoredObjectTypeOrNull(String typeName) { |
| MonitoredObjectType type = null; |
| if (objectMap != null && typeName != null) { |
| type = (MonitoredObjectType) objectMap.get(typeName); |
| } |
| return type; |
| } |
| } |