    001/*
    002 * Licensed to the Apache Software Foundation (ASF) under one or more
    003 * contributor license agreements.  See the NOTICE file distributed with
    004 * this work for additional information regarding copyright ownership.
    005 * The ASF licenses this file to You under the Apache License, Version 2.0
    006 * (the "License"); you may not use this file except in compliance with
    007 * the License.  You may obtain a copy of the License at
    008 *
    009 *      http://www.apache.org/licenses/LICENSE-2.0
    010 *
    011 * Unless required by applicable law or agreed to in writing, software
    012 * distributed under the License is distributed on an "AS IS" BASIS,
    013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014 * See the License for the specific language governing permissions and
    015 * limitations under the License.
    016 */
    017package org.apache.commons.pool2.impl;
    018
    019import java.util.List;
    020import java.util.Map;
    021
    022/**
    023 * Defines the methods that will be made available via JMX.
    024 *
    025 * NOTE: This interface exists only to define those attributes and methods that
    026 *       will be made available via JMX. It must not be implemented by clients
    027 *       as it is subject to change between major, minor and patch version
    028 *       releases of commons pool. Clients that implement this interface may
    029 *       not, therefore, be able to upgrade to a new minor or patch release
    030 *       without requiring code changes.
    031 *
    032 * @param <K> The type of keys maintained by the pool.
    033 *
    034 * @since 2.0
    035 */
    036public interface GenericKeyedObjectPoolMXBean<K> {
    037
    038    // Expose getters for configuration settings
    039
    040    /**
    041     * See {@link GenericKeyedObjectPool#getBlockWhenExhausted()}
    042     * @return See {@link GenericKeyedObjectPool#getBlockWhenExhausted()}
    043     */
    044    boolean getBlockWhenExhausted();
    045
    046    /**
    047     * See {@link GenericKeyedObjectPool#getBorrowedCount()}
    048     * @return See {@link GenericKeyedObjectPool#getBorrowedCount()}
    049     */
    050    long getBorrowedCount();
    051
    052    /**
    053     * See {@link GenericKeyedObjectPool#getCreatedCount()}
    054     * @return See {@link GenericKeyedObjectPool#getCreatedCount()}
    055     */
    056    long getCreatedCount();
    057
    058    /**
    059     * See {@link GenericKeyedObjectPool#getCreationStackTrace()}
    060     * @return See {@link GenericKeyedObjectPool#getCreationStackTrace()}
    061     */
    062    String getCreationStackTrace();
    063
    064    /**
    065     * See {@link GenericKeyedObjectPool#getDestroyedByBorrowValidationCount()}
    066     * @return See {@link GenericKeyedObjectPool#getDestroyedByBorrowValidationCount()}
    067     */
    068    long getDestroyedByBorrowValidationCount();
    069
    070    /**
    071     * See {@link GenericKeyedObjectPool#getDestroyedByEvictorCount()}
    072     * @return See {@link GenericKeyedObjectPool#getDestroyedByEvictorCount()}
    073     */
    074    long getDestroyedByEvictorCount();
    075
    076    /**
    077     * See {@link GenericKeyedObjectPool#getDestroyedCount()}
    078     * @return See {@link GenericKeyedObjectPool#getDestroyedCount()}
    079     */
    080    long getDestroyedCount();
    081
    082    /**
    083     * See {@link GenericKeyedObjectPool#getFairness()}
    084     * @return See {@link GenericKeyedObjectPool#getFairness()}
    085     */
    086    boolean getFairness();
    087
    088    /**
    089     * See {@link GenericKeyedObjectPool#getLifo()}
    090     * @return See {@link GenericKeyedObjectPool#getLifo()}
    091     */
    092    boolean getLifo();
    093
    094    /**
    095     * See {@link GenericKeyedObjectPool#getLogAbandoned()}
    096     * @return See {@link GenericKeyedObjectPool#getLogAbandoned()}
    097     * @since 2.10.0
    098     */
    099    default boolean getLogAbandoned() {
    100        return false;
    101    }
    102
    103    /**
    104     * See {@link GenericKeyedObjectPool#getMaxBorrowWaitTimeMillis()}
    105     * @return See {@link GenericKeyedObjectPool#getMaxBorrowWaitTimeMillis()}
    106     */
    107    long getMaxBorrowWaitTimeMillis();
    108
    109    /**
    110     * See {@link GenericKeyedObjectPool#getMaxIdlePerKey()}
    111     * @return See {@link GenericKeyedObjectPool#getMaxIdlePerKey()}
    112     */
    113    int getMaxIdlePerKey();
    114
    115    /**
    116     * See {@link GenericKeyedObjectPool#getMaxTotal()}
    117     * @return See {@link GenericKeyedObjectPool#getMaxTotal()}
    118     */
    119    int getMaxTotal();
    120
    121    /**
    122     * See {@link GenericKeyedObjectPool#getMaxTotalPerKey()}
    123     * @return See {@link GenericKeyedObjectPool#getMaxTotalPerKey()}
    124     */
    125    int getMaxTotalPerKey();
    126
    127    /**
    128     * See {@link GenericKeyedObjectPool#getMaxWaitDuration()}
    129     * @return See {@link GenericKeyedObjectPool#getMaxWaitDuration()}
    130     */
    131    long getMaxWaitMillis();
    132
    133    /**
    134     * See {@link GenericKeyedObjectPool#getMeanActiveTimeMillis()}
    135     * @return See {@link GenericKeyedObjectPool#getMeanActiveTimeMillis()}
    136     */
    137    long getMeanActiveTimeMillis();
    138
    139    /**
    140     * See {@link GenericKeyedObjectPool#getMaxBorrowWaitTimeMillis()}
    141     * @return See {@link GenericKeyedObjectPool#getMaxBorrowWaitTimeMillis()}
    142     */
    143    long getMeanBorrowWaitTimeMillis();
    144
    145    /**
    146     * See {@link GenericKeyedObjectPool#getMeanIdleTimeMillis()}
    147     * @return See {@link GenericKeyedObjectPool#getMeanIdleTimeMillis()}
    148     */
    149    long getMeanIdleTimeMillis();
    150
    151    /**
    152     * See {@link GenericKeyedObjectPool#getMinEvictableIdleDuration()}
    153     * @return See {@link GenericKeyedObjectPool#getMinEvictableIdleDuration()}
    154     */
    155    long getMinEvictableIdleTimeMillis();
    156
    157    // Expose getters for monitoring attributes
    158
    159    /**
    160     * See {@link GenericKeyedObjectPool#getMinIdlePerKey()}
    161     * @return See {@link GenericKeyedObjectPool#getMinIdlePerKey()}
    162     */
    163    int getMinIdlePerKey();
    164
    165    /**
    166     * See {@link GenericKeyedObjectPool#getNumActive()}
    167     * @return See {@link GenericKeyedObjectPool#getNumActive()}
    168     */
    169    int getNumActive();
    170
    171    /**
    172     * See {@link GenericKeyedObjectPool#getNumActivePerKey()}
    173     * @return See {@link GenericKeyedObjectPool#getNumActivePerKey()}
    174     */
    175    Map<String, Integer> getNumActivePerKey();
    176
    177    /**
    178     * See {@link GenericKeyedObjectPool#getNumIdle()}
    179     * @return See {@link GenericKeyedObjectPool#getNumIdle()}
    180     */
    181    int getNumIdle();
    182
    183    /**
    184     * See {@link GenericKeyedObjectPool#getNumTestsPerEvictionRun()}
    185     * @return See {@link GenericKeyedObjectPool#getNumTestsPerEvictionRun()}
    186     */
    187    int getNumTestsPerEvictionRun();
    188
    189    /**
    190     * See {@link GenericKeyedObjectPool#getNumWaiters()}
    191     * @return See {@link GenericKeyedObjectPool#getNumWaiters()}
    192     */
    193    int getNumWaiters();
    194
    195    /**
    196     * See {@link GenericKeyedObjectPool#getNumWaitersByKey()}
    197     * @return See {@link GenericKeyedObjectPool#getNumWaitersByKey()}
    198     */
    199    Map<String, Integer> getNumWaitersByKey();
    200
    201    /**
    202     * See {@link GenericKeyedObjectPool#getRemoveAbandonedOnBorrow()}
    203     * @return See {@link GenericKeyedObjectPool#getRemoveAbandonedOnBorrow()}
    204     * @since 2.10.0
    205     */
    206    default boolean getRemoveAbandonedOnBorrow() {
    207        return false;
    208    }
    209
    210    /**
    211     * See {@link GenericKeyedObjectPool#getRemoveAbandonedOnMaintenance()}
    212     * @return See {@link GenericKeyedObjectPool#getRemoveAbandonedOnMaintenance()}
    213     * @since 2.10.0
    214     */
    215    default boolean getRemoveAbandonedOnMaintenance()  {
    216        return false;
    217    }
    218
    219    /**
    220     * See {@link GenericKeyedObjectPool#getRemoveAbandonedTimeoutDuration()}
    221     * @return See {@link GenericKeyedObjectPool#getRemoveAbandonedTimeoutDuration()}
    222     * @since 2.10.0
    223     */
    224    default int getRemoveAbandonedTimeout() {
    225        return 0;
    226    }
    227
    228    /**
    229     * See {@link GenericKeyedObjectPool#getReturnedCount()}
    230     * @return See {@link GenericKeyedObjectPool#getReturnedCount()}
    231     */
    232    long getReturnedCount();
    233
    234    /**
    235     * See {@link GenericKeyedObjectPool#getTestOnBorrow()}
    236     * @return See {@link GenericKeyedObjectPool#getTestOnBorrow()}
    237     */
    238    boolean getTestOnBorrow();
    239
    240    /**
    241     * See {@link GenericKeyedObjectPool#getTestOnCreate()}
    242     * @return See {@link GenericKeyedObjectPool#getTestOnCreate()}
    243     * @since 2.2
    244     */
    245    boolean getTestOnCreate();
    246
    247    /**
    248     * See {@link GenericKeyedObjectPool#getTestOnReturn()}
    249     * @return See {@link GenericKeyedObjectPool#getTestOnReturn()}
    250     */
    251    boolean getTestOnReturn();
    252
    253    /**
    254     * See {@link GenericKeyedObjectPool#getTestWhileIdle()}
    255     * @return See {@link GenericKeyedObjectPool#getTestWhileIdle()}
    256     */
    257    boolean getTestWhileIdle();
    258
    259    /**
    260     * See {@link GenericKeyedObjectPool#getDurationBetweenEvictionRuns}
    261     * @return See {@link GenericKeyedObjectPool#getDurationBetweenEvictionRuns()}
    262     */
    263    long getTimeBetweenEvictionRunsMillis();
    264
    265    /**
    266     * See {@link GenericKeyedObjectPool#isAbandonedConfig()}
    267     * @return See {@link GenericKeyedObjectPool#isAbandonedConfig()}
    268     * @since 2.10.0
    269     */
    270    default boolean isAbandonedConfig() {
    271        return false;
    272    }
    273
    274    /**
    275     * See {@link GenericKeyedObjectPool#isClosed()}
    276     * @return See {@link GenericKeyedObjectPool#isClosed()}
    277     */
    278    boolean isClosed();
    279
    280    /**
    281     * See {@link GenericKeyedObjectPool#listAllObjects()}
    282     * @return See {@link GenericKeyedObjectPool#listAllObjects()}
    283     */
    284    Map<String, List<DefaultPooledObjectInfo>> listAllObjects();
    285}