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

org.eclipse.persistence.services.mbean.MBeanRuntimeServicesMBean Maven / Gradle / Ivy

There is a newer version: 5.0.0-B03
Show newest version
/*
 * Copyright (c) 1998, 2021 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,
 * or the Eclipse Distribution License v. 1.0 which is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
 */

// Contributors:
//     Oracle - initial API and implementation from Oracle TopLink
//     @author  mobrien
//     @since   EclipseLink 1.0 enh# 235168
package org.eclipse.persistence.services.mbean;

import java.util.List;
import java.util.Vector;

import org.eclipse.persistence.services.ClassSummaryDetailBase;

/**
 * 

* Purpose: Provide a dynamic interface into the EclipseLink Session. *

* Description: This class is meant to provide an interface for gaining access to configuration * of the EclipseLink Session during runtime. It provides the basis for a JMX MBean * */ public interface MBeanRuntimeServicesMBean { /** * This method is used to determine if messages should be logged by the session */ boolean getShouldLogMessages(); /** * This method is used to turn on Performance Profiling */ void setShouldProfilePerformance(boolean shouldProfile); /** * This method will return if profiling is turned on or not */ boolean getShouldProfilePerformance(); /** * This method is used to turn on Profile logging when using the Performance Profiler */ void setShouldLogPerformanceProfiler(boolean shouldLogPerformanceProfiler); /** * This method is used to determine if we should be logging when using the Performance Profiler */ boolean getShouldLogPerformanceProfiler(); /** * Method used to set if statements should be cached. Please note that Statements can not be cached when * using an external connection pool */ void setShouldCacheAllStatements(boolean shouldCacheAllStatements); /** * Returns if statements should be cached or not */ boolean getShouldCacheAllStatements(); /** * Used to set the statement cache size. This is only valid if using cached Statements */ void setStatementCacheSize(int size); /** * Returns the statement cache size. Only valid if statements are being cached */ int getStatementCacheSize(); /** * This method provides access for setting the sequence pre-allocation size */ void setSequencePreallocationSize(int size); /** * Method returns the value of the Sequence Preallocation size */ int getSequencePreallocationSize(); /** * This method allows the client to set the pool size for a particular pool, based on the pool name */ void updatePoolSize(String poolName, int maxSize, int minSize); /** * This method will return the available Connection pools within this Server Session */ List getAvailableConnectionPools(); /** * This method will retrieve the size of a particular connection pool */ List getSizeForPool(String poolName); /** * This method provides client with access to add a new connection pool to a TopLink * ServerSession. This method throws classNotFound Exception if any of the class names are misspelled. */ void addNewConnectionPool(String poolName, int maxSize, int minSize, String platform, String driverClassName, String url, String userName, String password) throws ClassNotFoundException; /** * This method is used to reset connections from the session to the database. Please * Note that this will not work with a SessionBroker at this time */ void resetAllConnections(); /** * This method is used to return those Class Names that have identity Maps in the Session. * Please note that SubClasses and aggregates will be missing from this list as they do not have * separate identity maps. */ List getClassesInSession(); /** * This method will return a collection of the objects in the Identity Map. * There is no particular order to these objects. */ List getObjectsInIdentityMap(String className) throws ClassNotFoundException; /** * This method is used to return the number of objects in a particular Identity Map * @param className the fully qualified name of the class to get number of instances of. * @exception ClassNotFoundException if thrown then the IdentityMap for that class name could not be found */ Integer getNumberOfObjectsInIdentityMap(String className) throws ClassNotFoundException; /** * This method will return a collection of the objects in the Identity Map. * There is no particular order to these objects. These objects are returned as a Map * which is how they are stored on the cache. This method replaces getObjectsInIdentityMapSubCache(String className) * which returned a List. * */ List getObjectsInIdentityMapSubCacheAsMap(String className) throws ClassNotFoundException; /** * This method is used to return the number of objects in a particular Identity Map's * subcache. Only works for those identity Maps with a sub cache (IE Hard Cache Weak Identity Map) * If ClassNotFoundException is thrown then the IdenityMap for that class name could not be found */ Integer getNumberOfObjectsInIdentityMapSubCache(String className) throws ClassNotFoundException; /** * Return the DMS sensor weight */ int getProfileWeight(); /** * Set the DMS sensor weight */ void setProfileWeight(int size); /** * Answer the EclipseLink log level at deployment time. This is read-only. */ String getDeployedEclipseLinkLogLevel(); /** * Answer the EclipseLink log level that is changeable. * This does not affect the log level in the project (i.e. The next * time the application is deployed, changes are forgotten) */ String getCurrentEclipseLinkLogLevel(); /** * Set the EclipseLink log level to be used at runtime. * * This does not affect the log level in the project (i.e. The next * time the application is deployed, changes are forgotten) * * @param newLevel new log level */ void setCurrentEclipseLinkLogLevel(String newLevel); /** * Answer the name of the EclipseLink session this MBean represents. */ String getSessionName(); /** * Return whether this session is an EclipseLink JPA session. * The absence of this function or a value of false will signify that the session * belongs to a provider other than EclipseLink. */ boolean isJPASession(); // 316513: refactored up as generic from WebLogic /** * Answer the type of the EclipseLink session this MBean represents. * Types include: "ServerSession", "DatabaseSession", "SessionBroker" */ String getSessionType(); /** * Provide an instance of 2 Dimensional Array simulating tabular format information about all * classes in the session whose class names match the provided filter. * * The 2 Dimensional array contains each item with values being row object array. Each row object array * represents EclipseLink class details info with respect to below attributes: * ["Class Name", "Parent Class Name", "Cache Type", "Configured Size", "Current Size"] * */ Object[][] getClassSummaryDetailsUsingFilter(String filter); /** * Provide an instance of 2 Dimensional Array simulating tabular format information about all * classes in the session. * * The 2 Dimensional array contains each item with values being row object array. Each row object array * represents EclipseLink class details info with respect to below attributes: * ["Class Name", "Parent Class Name", "Cache Type", "Configured Size", "Current Size"] * */ Object[][] getClassSummaryDetails(); /** * Provide a list of instance of ClassSummaryDetail containing information about the * classes in the session whose class names match the provided filter. * * ClassSummaryDetail is a model specific class that can be used internally by the Portable JMX Framework to * convert class attribute to JMX required open type, it has:- * 1. model specific type that needs to be converted : ["Class Name", "Parent Class Name", "Cache Type", "Configured Size", "Current Size"] * 2. convert methods. * * @param filter A comma separated list of strings to match against. * @return A ArrayList of instance of ClassSummaryDetail containing class information for the class names that match the filter. */ List getClassSummaryDetailsUsingFilterArray(String filter); /** * Provide a list of instance of ClassSummaryDetail containing information about all * classes in the session. * * ClassSummaryDetail is a model specific class that can be used internally by the Portable JMX Framework to * convert class attribute to JMX required open type, it has:- * 1. model specific type that needs to be converted : ["Class Name", "Parent Class Name", "Cache Type", "Configured Size", "Current Size"] * 2. convert methods. * * @return A ArrayList of instance of ClassSummaryDetail containing class information for the class names that match the filter. */ List getClassSummaryDetailsArray(); /** * INTERNAL: * This method traverses the EclipseLink descriptors and returns a Vector of the descriptor's * reference class names that match the provided filter. The filter is a comma separated * list of strings to match against. * * @param filter A comma separated list of strings to match against. * @return A Vector of class names that match the filter. */ Vector getMappedClassNamesUsingFilter(String filter); /** * getModuleName(): Answer the name of the context-root of the application that this session is associated with. * Answer "unknown" if there is no module name available. * Default behavior is to return "unknown" - we override this behavior here for WebLogic. */ String getModuleName(); /** * getApplicationName(): Answer the name of the module (EAR name) that this session is associated with. * Answer "unknown" if there is no application name available. * Default behavior is to return "unknown" - we override this behavior here for WebLogic. */ String getApplicationName(); /** * This method is used to get the type of profiling. * Possible values are: "EclipseLink" or "None". */ String getProfilingType(); /** * This method is used to select the type of profiling. * Valid values are: "EclipseLink" or "None". These values are not case sensitive. * null is considered to be "None". */ void setProfilingType(String profileType); /** * This method is used to turn on EclipseLink Performance Profiling */ void setUseEclipseLinkProfiling(); /** * This method answers true if EclipseLink Performance Profiling is on. */ Boolean getUsesEclipseLinkProfiling(); /** * This method is used to turn off all Performance Profiling, DMS or EclipseLink. */ void setUseNoProfiling(); /** * Return the size of strings after which will be bound into the statement * If we are not using a DatabaseLogin, or we're not using string binding, * answer 0 (zero). */ Integer getStringBindingSize(); /** * This method will return a long indicating the exact time in Milliseconds that the * session connected to the database. */ Long getTimeConnectionEstablished(); /** * This method will return if batchWriting is in use or not. */ Boolean getUsesJDBCBatchWriting(); /** * Shows if Byte Array Binding is turned on or not */ Boolean getUsesByteArrayBinding(); /** * Shows if native SQL is being used */ Boolean getUsesNativeSQL(); /** * This method indicates if streams are being used for binding */ Boolean getUsesStreamsForBinding(); /** * This method indicates if Strings are being bound */ Boolean getUsesStringBinding(); /** * Used to clear the statement cache. Only valid if statements are being cached */ void clearStatementCache(); /** * This method will print the available Connection pools to the SessionLog. */ void printAvailableConnectionPools(); /** * This method will retrieve the max size of a particular connection pool * @param poolName the name of the pool to get the max size for * @return Integer for the max size of the pool. Return -1 if pool doesn't exist. */ Integer getMaxSizeForPool(String poolName); /** * This method will retrieve the min size of a particular connection pool * @param poolName the name of the pool to get the min size for * @return Integer for the min size of the pool. Return -1 if pool doesn't exist. */ Integer getMinSizeForPool(String poolName); /** * This method is used to output those Class Names that have identity Maps in the Session. * Please note that SubClasses and aggregates will be missing form this list as they do not have * separate identity maps. */ void printClassesInSession(); /** * This method will log the objects in the Identity Map. * There is no particular order to these objects. * @param className the fully qualified classname identifying the identity map * @exception ClassNotFoundException if thrown then the IdentityMap for that class name could not be found */ void printObjectsInIdentityMap(String className) throws ClassNotFoundException; /** * This method will log the types of Identity Maps in the session. */ void printAllIdentityMapTypes(); /** * This method will log all objects in all Identity Maps in the session. */ void printObjectsInIdentityMaps(); /** * This method will SUM and return the number of objects in all Identity Maps in the session. */ Integer getNumberOfObjectsInAllIdentityMaps(); /** * This method will answer the number of persistent classes contained in the session. * This does not include aggregates. */ Integer getNumberOfPersistentClasses(); /** * This method will log the instance level locks in all Identity Maps in the session. */ void printIdentityMapLocks(); /** * This method will log the instance level locks in the Identity Map for the given class in the session. */ void printIdentityMapLocks(String registeredClassName); /** * This method assumes EclipseLink Profiling (as opposed to Java profiling). * This will log at the INFO level a summary of all elements in the profile. */ void printProfileSummary(); /** * This method assumes EclipseLink Profiling (as opposed to Java profiling). * This will log at the INFO level a summary of all elements in the profile, categorized * by Class. */ void printProfileSummaryByClass(); /** * This method assumes EclipseLink Profiling (as opposed to Java profiling). * This will log at the INFO level a summary of all elements in the profile, categorized * by Query. */ void printProfileSummaryByQuery(); /** * Return the log type, either "EclipseLink", "Java" or the simple name of the logging class used. * @return the log type */ String getLogType(); /** * Return the database platform used by the DatabaseSession. * @return String databasePlatform */ String getDatabasePlatform(); /** * Return JDBCConnection detail information. This includes URL and datasource information. */ String getJdbcConnectionDetails(); /** * Return connection pool type. Values include: "Internal", "External" and "N/A". */ String getConnectionPoolType(); /** * Return db driver class name. This only applies to DefaultConnector. Return "N/A" otherwise. */ String getDriver(); /** * Return the log filename. This returns the fully qualified path of the log file when * EclipseLink logging is enabled. Null is returned otherwise. * * @return String logFilename */ String getLogFilename(); /** * This method is used to initialize the identity maps specified by the Vector of classNames. * * @param classNames String[] of fully qualified classnames identifying the identity maps to initialize */ void initializeIdentityMaps(String[] classNames) throws ClassNotFoundException; /** * This method is used to invalidate the identity maps in the session. */ void invalidateAllIdentityMaps(); /** * This method is used to invalidate the identity maps specified by the String[] of classNames. * @param classNamesParam String[] of fully qualified classnames identifying the identity maps to invalidate * @param recurse Boolean indicating if we want to invalidate the children identity maps too */ void invalidateIdentityMaps(String[] classNamesParam, Boolean recurse) throws ClassNotFoundException; /** * This method is used to invalidate the identity maps specified by className. This does not * invalidate the children identity maps * @param className the fully qualified classname identifying the identity map to invalidate */ void invalidateIdentityMap(String className) throws ClassNotFoundException; /** * This method is used to invalidate the identity maps specified by className. * @param className the fully qualified classname identifying the identity map to invalidate * @param recurse Boolean indicating if we want to invalidate the children identity maps too */ void invalidateIdentityMap(String className, Boolean recurse) throws ClassNotFoundException; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy