    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 *      https://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.Set;
    020
    021/**
    022 * Defines the methods that will be made available via JMX.
    023 * <h2>Note</h2>
    024 * <p>
    025 * This interface exists only to define those attributes and methods that will be made available via JMX. It must not be implemented by clients as it is subject
    026 * to change between major, minor and patch version releases of commons pool. Clients that implement this interface may not, therefore, be able to upgrade to a
    027 * new minor or patch release without requiring code changes.
    028 * </p>
    029 *
    030 * @since 2.0
    031 */
    032public interface GenericObjectPoolMXBean {
    033
    034    /**
    035     * See {@link GenericObjectPool#getBlockWhenExhausted()}.
    036     *
    037     * @return See {@link GenericObjectPool#getBlockWhenExhausted()}.
    038     */
    039    boolean getBlockWhenExhausted();
    040
    041    /**
    042     * See {@link GenericObjectPool#getBorrowedCount()}.
    043     *
    044     * @return See {@link GenericObjectPool#getBorrowedCount()}.
    045     */
    046    long getBorrowedCount();
    047
    048    /**
    049     * See {@link GenericObjectPool#getCreatedCount()}.
    050     *
    051     * @return See {@link GenericObjectPool#getCreatedCount()}.
    052     */
    053    long getCreatedCount();
    054
    055    /**
    056     * See {@link GenericObjectPool#getCreationStackTrace()}.
    057     *
    058     * @return See {@link GenericObjectPool#getCreationStackTrace()}.
    059     */
    060    String getCreationStackTrace();
    061
    062    /**
    063     * See {@link GenericObjectPool#getDestroyedByBorrowValidationCount()}.
    064     *
    065     * @return See {@link GenericObjectPool#getDestroyedByBorrowValidationCount()}.
    066     */
    067    long getDestroyedByBorrowValidationCount();
    068
    069    /**
    070     * See {@link GenericObjectPool#getDestroyedByEvictorCount()}.
    071     *
    072     * @return See {@link GenericObjectPool#getDestroyedByEvictorCount()}.
    073     */
    074    long getDestroyedByEvictorCount();
    075
    076    /**
    077     * See {@link GenericObjectPool#getDestroyedCount()}.
    078     *
    079     * @return See {@link GenericObjectPool#getDestroyedCount()}.
    080     */
    081    long getDestroyedCount();
    082
    083    /**
    084     * See {@link GenericObjectPool#getFactoryType()}.
    085     *
    086     * @return See {@link GenericObjectPool#getFactoryType()}.
    087     */
    088    String getFactoryType();
    089
    090    /**
    091     * See {@link GenericObjectPool#getLifo()}.
    092     *
    093     * @return See {@link GenericObjectPool#getLifo()}.
    094     */
    095    boolean getFairness();
    096
    097    /**
    098     * See {@link GenericObjectPool#getFairness()}.
    099     *
    100     * @return See {@link GenericObjectPool#getFairness()}.
    101     */
    102    boolean getLifo();
    103
    104    /**
    105     * See {@link GenericObjectPool#getLogAbandoned()}.
    106     *
    107     * @return See {@link GenericObjectPool#getLogAbandoned()}.
    108     */
    109    boolean getLogAbandoned();
    110
    111    /**
    112     * See {@link GenericObjectPool#getMaxBorrowWaitTimeMillis()}.
    113     *
    114     * @return See {@link GenericObjectPool#getMaxBorrowWaitTimeMillis()}.
    115     */
    116    long getMaxBorrowWaitTimeMillis();
    117
    118    /**
    119     * See {@link GenericObjectPool#getMaxIdle()}.
    120     *
    121     * @return See {@link GenericObjectPool#getMaxIdle()}.
    122     */
    123    int getMaxIdle();
    124
    125    /**
    126     * See {@link GenericObjectPool#getMaxTotal()}.
    127     *
    128     * @return See {@link GenericObjectPool#getMaxTotal()}.
    129     */
    130    int getMaxTotal();
    131
    132    /**
    133     * See {@link GenericObjectPool#getMaxWaitDuration()}.
    134     *
    135     * @return See {@link GenericObjectPool#getMaxWaitDuration()}.
    136     */
    137    long getMaxWaitMillis();
    138
    139    /**
    140     * See {@link GenericObjectPool#getMeanActiveTimeMillis()}.
    141     *
    142     * @return See {@link GenericObjectPool#getMeanActiveTimeMillis()}.
    143     */
    144    long getMeanActiveTimeMillis();
    145
    146    /**
    147     * See {@link GenericObjectPool#getMeanBorrowWaitTimeMillis()}.
    148     *
    149     * @return See {@link GenericObjectPool#getMeanBorrowWaitTimeMillis()}.
    150     */
    151    long getMeanBorrowWaitTimeMillis();
    152
    153    // Getters for monitoring attributes
    154
    155    /**
    156     * See {@link GenericObjectPool#getMeanIdleTimeMillis()}.
    157     *
    158     * @return See {@link GenericObjectPool#getMeanIdleTimeMillis()}.
    159     */
    160    long getMeanIdleTimeMillis();
    161
    162    /**
    163     * See {@link GenericObjectPool#getMinEvictableIdleDuration()}.
    164     *
    165     * @return See {@link GenericObjectPool#getMinEvictableIdleDuration()}.
    166     */
    167    long getMinEvictableIdleTimeMillis();
    168
    169    /**
    170     * See {@link GenericObjectPool#getMinIdle()}.
    171     *
    172     * @return See {@link GenericObjectPool#getMinIdle()}.
    173     */
    174    int getMinIdle();
    175
    176    /**
    177     * See {@link GenericObjectPool#getNumActive()}.
    178     *
    179     * @return See {@link GenericObjectPool#getNumActive()}.
    180     */
    181    int getNumActive();
    182
    183    /**
    184     * See {@link GenericObjectPool#getNumIdle()}.
    185     *
    186     * @return See {@link GenericObjectPool#getNumIdle()}.
    187     */
    188    int getNumIdle();
    189
    190    /**
    191     * See {@link GenericObjectPool#getNumTestsPerEvictionRun()}.
    192     *
    193     * @return See {@link GenericObjectPool#getNumTestsPerEvictionRun()}.
    194     */
    195    int getNumTestsPerEvictionRun();
    196
    197    /**
    198     * See {@link GenericObjectPool#getNumWaiters()}.
    199     *
    200     * @return See {@link GenericObjectPool#getNumWaiters()}.
    201     */
    202    int getNumWaiters();
    203
    204    /**
    205     * See {@link GenericObjectPool#getRemoveAbandonedOnBorrow()}.
    206     *
    207     * @return See {@link GenericObjectPool#getRemoveAbandonedOnBorrow()}.
    208     */
    209    boolean getRemoveAbandonedOnBorrow();
    210
    211    /**
    212     * See {@link GenericObjectPool#getRemoveAbandonedOnMaintenance()}.
    213     *
    214     * @return See {@link GenericObjectPool#getRemoveAbandonedOnMaintenance()}.
    215     */
    216    boolean getRemoveAbandonedOnMaintenance();
    217
    218    /**
    219     * See {@link GenericObjectPool#getRemoveAbandonedTimeoutDuration()}.
    220     *
    221     * @return See {@link GenericObjectPool#getRemoveAbandonedTimeoutDuration()}.
    222     */
    223    int getRemoveAbandonedTimeout();
    224
    225    /**
    226     * See {@link GenericObjectPool#getReturnedCount()}.
    227     *
    228     * @return See {@link GenericObjectPool#getReturnedCount()}.
    229     */
    230    long getReturnedCount();
    231
    232    /**
    233     * See {@link GenericObjectPool#getTestOnBorrow()}.
    234     *
    235     * @return See {@link GenericObjectPool#getTestOnBorrow()}.
    236     */
    237    boolean getTestOnBorrow();
    238
    239    // Getters for abandoned object removal configuration
    240
    241    /**
    242     * See {@link GenericObjectPool#getTestOnCreate()}.
    243     *
    244     * @return See {@link GenericObjectPool#getTestOnCreate()}.
    245     * @since 2.2
    246     */
    247    boolean getTestOnCreate();
    248
    249    /**
    250     * See {@link GenericObjectPool#getTestOnReturn()}.
    251     *
    252     * @return See {@link GenericObjectPool#getTestOnReturn()}.
    253     */
    254    boolean getTestOnReturn();
    255
    256    /**
    257     * See {@link GenericObjectPool#getTestWhileIdle()}.
    258     *
    259     * @return See {@link GenericObjectPool#getTestWhileIdle()}.
    260     */
    261    boolean getTestWhileIdle();
    262
    263    /**
    264     * See {@link GenericObjectPool#getDurationBetweenEvictionRuns()}.
    265     *
    266     * @return See {@link GenericObjectPool#getDurationBetweenEvictionRuns()}.
    267     */
    268    long getTimeBetweenEvictionRunsMillis();
    269
    270    /**
    271     * See {@link GenericObjectPool#isAbandonedConfig()}.
    272     *
    273     * @return See {@link GenericObjectPool#isAbandonedConfig()}.
    274     */
    275    boolean isAbandonedConfig();
    276
    277    /**
    278     * See {@link GenericObjectPool#isClosed()}.
    279     *
    280     * @return See {@link GenericObjectPool#isClosed()}.
    281     */
    282    boolean isClosed();
    283
    284    /**
    285     * See {@link GenericObjectPool#listAllObjects()}.
    286     *
    287     * @return See {@link GenericObjectPool#listAllObjects()}.
    288     */
    289    Set<DefaultPooledObjectInfo> listAllObjects();
    290}