View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.dbcp2;
18  
19  import java.sql.Connection;
20  import java.sql.SQLException;
21  
22  /**
23   * Defines the attributes and methods that will be exposed via JMX for {@link PoolableConnection} instances.
24   *
25   * @since 2.0
26   */
27  public interface PoolableConnectionMXBean {
28  
29      /**
30       * Clears the cached state. Call when you know that the underlying connection may have been accessed directly.
31       */
32      void clearCachedState();
33  
34      /**
35       * See {@link Connection#clearWarnings()}.
36       *
37       * @throws SQLException See {@link Connection#clearWarnings()}.
38       */
39      void clearWarnings() throws SQLException;
40  
41      /**
42       * Returns this instance to my containing pool.
43       *
44       * @throws SQLException Throw if this instance cannot be returned.
45       */
46      void close() throws SQLException;
47  
48      /**
49       * See {@link Connection#getAutoCommit()}.
50       *
51       * @return See {@link Connection#getAutoCommit()}.
52       * @throws SQLException See {@link Connection#getAutoCommit()}.
53       */
54      boolean getAutoCommit() throws SQLException;
55  
56      /**
57       * Gets whether to cache properties. The cached properties are:
58       * <ul>
59       * <li>auto-commit</li>
60       * <li>catalog</li>
61       * <li>schema</li>
62       * <li>read-only</li>
63       * </ul>
64       *
65       * @return The value for the state caching flag.
66       */
67      boolean getCacheState();
68  
69      /**
70       * See {@link Connection#getCatalog()}.
71       *
72       * @return See {@link Connection#getCatalog()}.
73       * @throws SQLException See {@link Connection#getCatalog()}.
74       */
75      String getCatalog() throws SQLException;
76  
77      /**
78       * See {@link Connection#getHoldability()}.
79       *
80       * @return See {@link Connection#getHoldability()}.
81       * @throws SQLException See {@link Connection#getHoldability()}.
82       */
83      int getHoldability() throws SQLException;
84  
85      /**
86       * See {@link Connection#getSchema()}.
87       *
88       * @return See {@link Connection#getSchema()}.
89       * @throws SQLException See {@link Connection#getSchema()}.
90       */
91      String getSchema() throws SQLException;
92  
93      /**
94       * Gets the value of the {@link Object#toString()} method via a bean getter, so it can be read as a property via JMX.
95       *
96       * @return the value of the {@link Object#toString()}.
97       */
98      String getToString();
99  
100     /**
101      * See {@link Connection#getTransactionIsolation()}.
102      *
103      * @return See {@link Connection#getTransactionIsolation()}.
104      * @throws SQLException See {@link Connection#getTransactionIsolation()}.
105      */
106     int getTransactionIsolation() throws SQLException;
107 
108     /**
109      * See {@link Connection#isClosed()}.
110      *
111      * @return See {@link Connection#isClosed()}.
112      * @throws SQLException See {@link Connection#isClosed()}.
113      */
114     boolean isClosed() throws SQLException;
115 
116     /**
117      * See {@link Connection#isReadOnly()}.
118      *
119      * @return See {@link Connection#isReadOnly()}.
120      * @throws SQLException See {@link Connection#isReadOnly()}.
121      */
122     boolean isReadOnly() throws SQLException;
123 
124     /**
125      * Closes the underlying {@link Connection}.
126      *
127      * @throws SQLException Thrown if the connection can be closed.
128      */
129     void reallyClose() throws SQLException;
130 
131     /**
132      * See {@link Connection#setAutoCommit(boolean)}.
133      *
134      * @param autoCommit See {@link Connection#setAutoCommit(boolean)}.
135      * @throws SQLException See {@link Connection#setAutoCommit(boolean)}.
136      */
137     void setAutoCommit(boolean autoCommit) throws SQLException;
138 
139     /**
140      * Sets whether to cache properties. The cached properties are:
141      * <ul>
142      * <li>auto-commit</li>
143      * <li>catalog</li>
144      * <li>schema</li>
145      * <li>read-only</li>
146      * </ul>
147      *
148      * @param cacheState The new value for the state caching flag
149      */
150     void setCacheState(boolean cacheState);
151 
152     /**
153      * See {@link Connection#setCatalog(String)}.
154      *
155      * @param catalog See {@link Connection#setCatalog(String)}.
156      * @throws SQLException See {@link Connection#setCatalog(String)}.
157      */
158     void setCatalog(String catalog) throws SQLException;
159 
160     /**
161      * See {@link Connection#setHoldability(int)}.
162      *
163      * @param holdability {@link Connection#setHoldability(int)}.
164      * @throws SQLException See {@link Connection#setHoldability(int)}.
165      */
166     void setHoldability(int holdability) throws SQLException;
167 
168     /**
169      * See {@link Connection#setReadOnly(boolean)}.
170      *
171      * @param readOnly See {@link Connection#setReadOnly(boolean)}.
172      * @throws SQLException See {@link Connection#setReadOnly(boolean)}.
173      */
174     void setReadOnly(boolean readOnly) throws SQLException;
175 
176     /**
177      * See {@link Connection#setSchema(String)}.
178      *
179      * @param schema See {@link Connection#setSchema(String)}.
180      * @throws SQLException See {@link Connection#setSchema(String)}.
181      */
182     void setSchema(String schema) throws SQLException;
183 
184     /**
185      * See {@link Connection#setTransactionIsolation(int)}.
186      *
187      * @param level See {@link Connection#setTransactionIsolation(int)}.
188      * @throws SQLException See {@link Connection#setTransactionIsolation(int)}.
189      */
190     void setTransactionIsolation(int level) throws SQLException;
191 }