    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#getFairness()}
    048     * @return See {@link GenericKeyedObjectPool#getFairness()}
    049     */
    050    boolean getFairness();
    051
    052    /**
    053     * See {@link GenericKeyedObjectPool#getLifo()}
    054     * @return See {@link GenericKeyedObjectPool#getLifo()}
    055     */
    056    boolean getLifo();
    057
    058    /**
    059     * See {@link GenericKeyedObjectPool#getMaxIdlePerKey()}
    060     * @return See {@link GenericKeyedObjectPool#getMaxIdlePerKey()}
    061     */
    062    int getMaxIdlePerKey();
    063
    064    /**
    065     * See {@link GenericKeyedObjectPool#getMaxTotal()}
    066     * @return See {@link GenericKeyedObjectPool#getMaxTotal()}
    067     */
    068    int getMaxTotal();
    069
    070    /**
    071     * See {@link GenericKeyedObjectPool#getMaxTotalPerKey()}
    072     * @return See {@link GenericKeyedObjectPool#getMaxTotalPerKey()}
    073     */
    074    int getMaxTotalPerKey();
    075
    076    /**
    077     * See {@link GenericKeyedObjectPool#getMaxWaitMillis()}
    078     * @return See {@link GenericKeyedObjectPool#getMaxWaitMillis()}
    079     */
    080    long getMaxWaitMillis();
    081
    082    /**
    083     * See {@link GenericKeyedObjectPool#getMinEvictableIdleTimeMillis()}
    084     * @return See {@link GenericKeyedObjectPool#getMinEvictableIdleTimeMillis()}
    085     */
    086    long getMinEvictableIdleTimeMillis();
    087
    088    /**
    089     * See {@link GenericKeyedObjectPool#getMinIdlePerKey()}
    090     * @return See {@link GenericKeyedObjectPool#getMinIdlePerKey()}
    091     */
    092    int getMinIdlePerKey();
    093
    094    /**
    095     * See {@link GenericKeyedObjectPool#getNumActive()}
    096     * @return See {@link GenericKeyedObjectPool#getNumActive()}
    097     */
    098    int getNumActive();
    099
    100    /**
    101     * See {@link GenericKeyedObjectPool#getNumIdle()}
    102     * @return See {@link GenericKeyedObjectPool#getNumIdle()}
    103     */
    104    int getNumIdle();
    105
    106    /**
    107     * See {@link GenericKeyedObjectPool#getNumTestsPerEvictionRun()}
    108     * @return See {@link GenericKeyedObjectPool#getNumTestsPerEvictionRun()}
    109     */
    110    int getNumTestsPerEvictionRun();
    111
    112    /**
    113     * See {@link GenericKeyedObjectPool#getTestOnCreate()}
    114     * @return See {@link GenericKeyedObjectPool#getTestOnCreate()}
    115     * @since 2.2
    116     */
    117    boolean getTestOnCreate();
    118
    119    /**
    120     * See {@link GenericKeyedObjectPool#getTestOnBorrow()}
    121     * @return See {@link GenericKeyedObjectPool#getTestOnBorrow()}
    122     */
    123    boolean getTestOnBorrow();
    124
    125    /**
    126     * See {@link GenericKeyedObjectPool#getTestOnReturn()}
    127     * @return See {@link GenericKeyedObjectPool#getTestOnReturn()}
    128     */
    129    boolean getTestOnReturn();
    130
    131    /**
    132     * See {@link GenericKeyedObjectPool#getTestWhileIdle()}
    133     * @return See {@link GenericKeyedObjectPool#getTestWhileIdle()}
    134     */
    135    boolean getTestWhileIdle();
    136
    137    /**
    138     * See {@link GenericKeyedObjectPool#getTimeBetweenEvictionRunsMillis()}
    139     * @return See {@link GenericKeyedObjectPool#getTimeBetweenEvictionRunsMillis()}
    140     */
    141    long getTimeBetweenEvictionRunsMillis();
    142
    143    /**
    144     * See {@link GenericKeyedObjectPool#isClosed()}
    145     * @return See {@link GenericKeyedObjectPool#isClosed()}
    146     */
    147    boolean isClosed();
    148
    149    // Expose getters for monitoring attributes
    150
    151    /**
    152     * See {@link GenericKeyedObjectPool#getNumActivePerKey()}
    153     * @return See {@link GenericKeyedObjectPool#getNumActivePerKey()}
    154     */
    155    Map<String,Integer> getNumActivePerKey();
    156
    157    /**
    158     * See {@link GenericKeyedObjectPool#getBorrowedCount()}
    159     * @return See {@link GenericKeyedObjectPool#getBorrowedCount()}
    160     */
    161    long getBorrowedCount();
    162
    163    /**
    164     * See {@link GenericKeyedObjectPool#getReturnedCount()}
    165     * @return See {@link GenericKeyedObjectPool#getReturnedCount()}
    166     */
    167    long getReturnedCount();
    168
    169    /**
    170     * See {@link GenericKeyedObjectPool#getCreatedCount()}
    171     * @return See {@link GenericKeyedObjectPool#getCreatedCount()}
    172     */
    173    long getCreatedCount();
    174
    175    /**
    176     * See {@link GenericKeyedObjectPool#getDestroyedCount()}
    177     * @return See {@link GenericKeyedObjectPool#getDestroyedCount()}
    178     */
    179    long getDestroyedCount();
    180
    181    /**
    182     * See {@link GenericKeyedObjectPool#getDestroyedByEvictorCount()}
    183     * @return See {@link GenericKeyedObjectPool#getDestroyedByEvictorCount()}
    184     */
    185    long getDestroyedByEvictorCount();
    186
    187    /**
    188     * See {@link GenericKeyedObjectPool#getDestroyedByBorrowValidationCount()}
    189     * @return See {@link GenericKeyedObjectPool#getDestroyedByBorrowValidationCount()}
    190     */
    191    long getDestroyedByBorrowValidationCount();
    192
    193    /**
    194     * See {@link GenericKeyedObjectPool#getMeanActiveTimeMillis()}
    195     * @return See {@link GenericKeyedObjectPool#getMeanActiveTimeMillis()}
    196     */
    197    long getMeanActiveTimeMillis();
    198
    199    /**
    200     * See {@link GenericKeyedObjectPool#getMeanIdleTimeMillis()}
    201     * @return See {@link GenericKeyedObjectPool#getMeanIdleTimeMillis()}
    202     */
    203    long getMeanIdleTimeMillis();
    204
    205    /**
    206     * See {@link GenericKeyedObjectPool#getMaxBorrowWaitTimeMillis()}
    207     * @return See {@link GenericKeyedObjectPool#getMaxBorrowWaitTimeMillis()}
    208     */
    209    long getMeanBorrowWaitTimeMillis();
    210
    211    /**
    212     * See {@link GenericKeyedObjectPool#getMaxBorrowWaitTimeMillis()}
    213     * @return See {@link GenericKeyedObjectPool#getMaxBorrowWaitTimeMillis()}
    214     */
    215    long getMaxBorrowWaitTimeMillis();
    216
    217    /**
    218     * See {@link GenericKeyedObjectPool#getCreationStackTrace()}
    219     * @return See {@link GenericKeyedObjectPool#getCreationStackTrace()}
    220     */
    221    String getCreationStackTrace();
    222
    223    /**
    224     * See {@link GenericKeyedObjectPool#getNumWaiters()}
    225     * @return See {@link GenericKeyedObjectPool#getNumWaiters()}
    226     */
    227    int getNumWaiters();
    228
    229    /**
    230     * See {@link GenericKeyedObjectPool#getNumWaitersByKey()}
    231     * @return See {@link GenericKeyedObjectPool#getNumWaitersByKey()}
    232     */
    233    Map<String,Integer> getNumWaitersByKey();
    234
    235    /**
    236     * See {@link GenericKeyedObjectPool#listAllObjects()}
    237     * @return See {@link GenericKeyedObjectPool#listAllObjects()}
    238     */
    239    Map<String,List<DefaultPooledObjectInfo>> listAllObjects();
    240}