Mercurial > dive4elements > gnv-client
annotate geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/connectionpool/ArcSDEConnectionPool.java @ 887:b757def3ff55
Bring @author javadoc tags in form '@author <a href="john.doe@example.com">John Doe</a>'
geo-backend/trunk@859 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 29 Mar 2010 09:45:05 +0000 |
parents | 8b442223741c |
children | e5e30090c37c |
rev | line source |
---|---|
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.gnv.geobackend.sde.connectionpool; |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
2 |
886
8b442223741c
Ordered imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
885
diff
changeset
|
3 import de.intevation.gnv.geobackend.base.connectionpool.ConnectionPool; |
8b442223741c
Ordered imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
885
diff
changeset
|
4 |
8b442223741c
Ordered imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
885
diff
changeset
|
5 import de.intevation.gnv.geobackend.base.connectionpool.exception.ConnectionException; |
8b442223741c
Ordered imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
885
diff
changeset
|
6 |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
7 import java.sql.Connection; |
886
8b442223741c
Ordered imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
885
diff
changeset
|
8 |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
9 import java.util.Properties; |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
10 |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
11 import org.apache.commons.pool.PoolableObjectFactory; |
886
8b442223741c
Ordered imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
885
diff
changeset
|
12 |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
13 import org.apache.commons.pool.impl.GenericObjectPool; |
886
8b442223741c
Ordered imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
885
diff
changeset
|
14 |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
15 import org.apache.log4j.Logger; |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
16 |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
17 /** |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
18 *This is the ArcSDE specific implementation of the Interface ConnectionPool |
885
1c3efbd2fc5a
Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
274
diff
changeset
|
19 * |
887
b757def3ff55
Bring @author javadoc tags in form '@author <a href="john.doe@example.com">John Doe</a>'
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
886
diff
changeset
|
20 * @author <a href="mailto:tim.englich@intevation.de">Tim Englich</a> |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
21 */ |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
22 public class ArcSDEConnectionPool implements ConnectionPool { |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
23 |
265 | 24 /** |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
25 * the logger, used to log exceptions and additonaly information |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
26 */ |
265 | 27 private static Logger log = Logger |
28 .getLogger(ArcSDEPoolableObjectFactory.class); | |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
29 |
265 | 30 /** |
31 * The Pool which stores the Connections to the ArcSDE Backend | |
32 */ | |
33 private GenericObjectPool pool = null; | |
34 | |
35 /** | |
36 * @see de.intevation.gnv.geobackend.base.connectionpool.ConnectionPool#closeConnection(java.lang.Object) | |
37 */ | |
38 public void closeConnection(Connection connection) | |
39 throws ConnectionException { | |
40 try { | |
41 this.pool.returnObject(connection); | |
42 } catch (Exception e) { | |
43 log.error(e, e); | |
44 throw new ConnectionException(e); | |
45 } | |
46 | |
47 } | |
48 | |
49 /** | |
50 * @see de.intevation.gnv.geobackend.base.connectionpool.ConnectionPool#getConnection(java.lang.String) | |
51 */ | |
52 public synchronized Connection getConnection(String connectionID) | |
53 throws ConnectionException { | |
54 try { | |
55 Object object = this.pool.borrowObject(); | |
56 | |
57 if (object instanceof Connection) { | |
58 return (Connection) object; | |
59 } else { | |
60 throw new ConnectionException( | |
61 "Created Object is not an java.sql.Connection"); | |
62 } | |
63 | |
64 } catch (Exception e) { | |
65 log.error(e, e); | |
66 throw new ConnectionException(e); | |
67 } | |
68 } | |
69 | |
70 /** | |
71 * @see de.intevation.gnv.geobackend.base.connectionpool.ConnectionPool#initialize(java.util.Properties) | |
72 */ | |
73 public void initialize(Properties properties) { | |
74 log.info("ArcSDEConnectionPool.initialize has been called"); | |
75 log.info("ConnectionPool will be initialized"); | |
76 | |
77 PoolableObjectFactory poolableObjectFactory = new ArcSDEPoolableObjectFactory( | |
78 properties); | |
79 | |
80 int maxActive = Integer.parseInt(properties.getProperty("maxActive", | |
81 "10")); | |
82 long maxWait = Long.parseLong(properties.getProperty("maxWait", | |
83 "" + GenericObjectPool.DEFAULT_MAX_WAIT)); | |
84 int maxIdle = Integer.parseInt(properties.getProperty("maxIdle", | |
85 "" + GenericObjectPool.DEFAULT_MAX_IDLE)); | |
86 int minIdle = Integer.parseInt(properties.getProperty("minIdle", | |
87 "" + GenericObjectPool.DEFAULT_MIN_IDLE)); | |
88 boolean testOnBorrow = Boolean.parseBoolean(properties.getProperty( | |
89 "testOnBorrow", "" + GenericObjectPool.DEFAULT_TEST_ON_BORROW)); | |
90 boolean testOnReturn = Boolean.parseBoolean(properties.getProperty( | |
91 "testOnReturn", "" + GenericObjectPool.DEFAULT_TEST_ON_RETURN)); | |
92 long timeBetweenEvictionRunsMillis = Long | |
93 .parseLong(properties | |
94 .getProperty( | |
95 "timeBetweenEvictionRunsMillis", | |
96 "" | |
97 + GenericObjectPool.DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS)); | |
98 int numTestsPerEvictionRun = Integer.parseInt(properties.getProperty( | |
99 "numTestsPerEvictionRun", | |
100 "" + GenericObjectPool.DEFAULT_NUM_TESTS_PER_EVICTION_RUN)); | |
101 long minEvictableIdleTimeMillis = Long | |
102 .parseLong(properties | |
103 .getProperty( | |
104 "minEvictableIdleTimeMillis", | |
105 "" | |
106 + GenericObjectPool.DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS)); | |
107 boolean testWhileIdle = Boolean.parseBoolean(properties | |
108 .getProperty("testWhileIdle", | |
109 "" + GenericObjectPool.DEFAULT_TEST_WHILE_IDLE)); | |
885
1c3efbd2fc5a
Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
274
diff
changeset
|
110 |
265 | 111 log.info("Maximum Number of active Connections: " + maxActive); |
112 log.info("Maximum Number of waiting: " + maxWait); | |
113 log.info("Maximum Number of idle: " + maxIdle); | |
114 log.info("Minimum Number of idle: " + minIdle); | |
115 log.info("TestOnBorrow: " + testOnBorrow); | |
116 log.info("TestOnReturn: " + testOnReturn); | |
117 log.info("TimeBetweenEvictionRunsMillis: " + timeBetweenEvictionRunsMillis); | |
118 log.info("NumTestsPerEvictionRun: " + numTestsPerEvictionRun); | |
119 log.info("MinEvictableIdleTimeMillis: " + minEvictableIdleTimeMillis); | |
120 log.info("TestWhileIdle: " + testWhileIdle); | |
885
1c3efbd2fc5a
Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
274
diff
changeset
|
121 |
265 | 122 this.pool = new GenericObjectPool(poolableObjectFactory, maxActive, |
123 GenericObjectPool.DEFAULT_WHEN_EXHAUSTED_ACTION, maxWait, | |
124 maxIdle, minIdle, testOnBorrow, testOnReturn, | |
125 timeBetweenEvictionRunsMillis, numTestsPerEvictionRun, | |
126 minEvictableIdleTimeMillis, testWhileIdle); | |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
127 } |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
128 } |