KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > avalon > excalibur > datasource > cluster > HashedDataSourceCluster


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
14  * implied.
15  *
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */

19
20 package org.apache.avalon.excalibur.datasource.cluster;
21
22 import java.sql.Connection JavaDoc;
23 import java.sql.SQLException JavaDoc;
24
25 import org.apache.avalon.excalibur.datasource.DataSourceComponent;
26
27 /**
28  * @author <a HREF="mailto:dev@avalon.apache.org">Avalon Development Team</a>
29  * @version CVS $Revision: 1.4 $ $Date: 2004/02/28 11:47:20 $
30  * @since 4.1
31  */

32 public interface HashedDataSourceCluster
33     extends DataSourceComponent
34 {
35     /**
36      * The name of the role for convenience
37      */

38     String JavaDoc ROLE = HashedDataSourceCluster.class.getName();
39
40     /**
41      * Returns the number of DataSources in the cluster.
42      *
43      * @return size of the cluster.
44      */

45     int getClusterSize();
46
47     /**
48      * Gets a Connection to a database given a hash object.
49      *
50      * @param hashObject Object whose hashCode will be used to select which of the Clusted
51      * DataSources will be provide a Connection.
52      *
53      * @throws org.apache.avalon.excalibur.datasource.NoValidConnectionException when there is no valid Connection wrapper
54      * available in the classloader or when the index is not valid.
55      *
56      * @throws org.apache.avalon.excalibur.datasource.NoAvailableConnectionException when there are no more available
57      * Connections in the pool.
58      */

59     Connection JavaDoc getConnectionForHashObject( Object JavaDoc hashObject ) throws SQLException JavaDoc;
60
61     /**
62      * Gets a Connection to a database given a hash code.
63      *
64      * @param hashCode HashCode which will be used to select which of the Clusted
65      * DataSources will be provide a Connection.
66      *
67      * @throws org.apache.avalon.excalibur.datasource.NoValidConnectionException when there is no valid Connection wrapper
68      * available in the classloader or when the index is not valid.
69      *
70      * @throws org.apache.avalon.excalibur.datasource.NoAvailableConnectionException when there are no more available
71      * Connections in the pool.
72      */

73     Connection JavaDoc getConnectionForHashCode( int hashCode ) throws SQLException JavaDoc;
74
75     /**
76      * Gets a Connection to a database given an index.
77      *
78      * @param index Index of the DataSource for which a connection is to be returned.
79      *
80      * @throws org.apache.avalon.excalibur.datasource.NoValidConnectionException when there is no valid Connection wrapper
81      * available in the classloader or when the index is not valid.
82      *
83      * @throws org.apache.avalon.excalibur.datasource.NoAvailableConnectionException when there are no more available
84      * Connections in the pool.
85      */

86     Connection JavaDoc getConnectionForIndex( int index ) throws SQLException JavaDoc;
87
88     /**
89      * Gets the index which will be resolved for a given hashCode. This can be used
90      * by user code to optimize the use of DataSource Clusters.
91      *
92      * @param hashObject Object whose hashCode will be used to select which of the Clusted
93      * DataSources will be provide a Connection.
94      */

95     int getIndexForHashObject( Object JavaDoc hashObject );
96
97     /**
98      * Gets the index which will be resolved for a given hashCode. This can be used
99      * by user code to optimize the use of DataSource Clusters.
100      *
101      * @param hashCode HashCode which will be used to select which of the Clusted
102      * DataSources will be provide a Connection.
103      */

104     int getIndexForHashCode( int hashCode );
105 }
106
107
Popular Tags