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
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
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
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
27 private static Logger log = Logger
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
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
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
30 /**
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
31 * The Pool which stores the Connections to the ArcSDE Backend
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
32 */
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
33 private GenericObjectPool pool = null;
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
34
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
35 /**
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
36 * @see de.intevation.gnv.geobackend.base.connectionpool.ConnectionPool#closeConnection(java.lang.Object)
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
37 */
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
38 public void closeConnection(Connection connection)
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
39 throws ConnectionException {
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
40 try {
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
41 this.pool.returnObject(connection);
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
42 } catch (Exception e) {
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
43 log.error(e, e);
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
44 throw new ConnectionException(e);
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
45 }
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
46
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
47 }
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
48
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
49 /**
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
50 * @see de.intevation.gnv.geobackend.base.connectionpool.ConnectionPool#getConnection(java.lang.String)
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
51 */
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
52 public synchronized Connection getConnection(String connectionID)
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
53 throws ConnectionException {
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
54 try {
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
55 Object object = this.pool.borrowObject();
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
56
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
57 if (object instanceof Connection) {
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
58 return (Connection) object;
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
59 } else {
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
60 throw new ConnectionException(
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
61 "Created Object is not an java.sql.Connection");
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
62 }
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
63
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
64 } catch (Exception e) {
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
65 log.error(e, e);
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
66 throw new ConnectionException(e);
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
67 }
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
68 }
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
69
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
70 /**
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
71 * @see de.intevation.gnv.geobackend.base.connectionpool.ConnectionPool#initialize(java.util.Properties)
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
72 */
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
73 public void initialize(Properties properties) {
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
74 log.info("ArcSDEConnectionPool.initialize has been called");
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
75 log.info("ConnectionPool will be initialized");
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
76
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
77 PoolableObjectFactory poolableObjectFactory = new ArcSDEPoolableObjectFactory(
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
78 properties);
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
79
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
80 int maxActive = Integer.parseInt(properties.getProperty("maxActive",
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
81 "10"));
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
82 long maxWait = Long.parseLong(properties.getProperty("maxWait",
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
83 "" + GenericObjectPool.DEFAULT_MAX_WAIT));
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
84 int maxIdle = Integer.parseInt(properties.getProperty("maxIdle",
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
85 "" + GenericObjectPool.DEFAULT_MAX_IDLE));
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
86 int minIdle = Integer.parseInt(properties.getProperty("minIdle",
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
87 "" + GenericObjectPool.DEFAULT_MIN_IDLE));
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
88 boolean testOnBorrow = Boolean.parseBoolean(properties.getProperty(
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
89 "testOnBorrow", "" + GenericObjectPool.DEFAULT_TEST_ON_BORROW));
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
90 boolean testOnReturn = Boolean.parseBoolean(properties.getProperty(
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
91 "testOnReturn", "" + GenericObjectPool.DEFAULT_TEST_ON_RETURN));
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
92 long timeBetweenEvictionRunsMillis = Long
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
93 .parseLong(properties
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
94 .getProperty(
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
95 "timeBetweenEvictionRunsMillis",
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
96 ""
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
97 + GenericObjectPool.DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS));
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
98 int numTestsPerEvictionRun = Integer.parseInt(properties.getProperty(
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
99 "numTestsPerEvictionRun",
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
100 "" + GenericObjectPool.DEFAULT_NUM_TESTS_PER_EVICTION_RUN));
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
101 long minEvictableIdleTimeMillis = Long
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
102 .parseLong(properties
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
103 .getProperty(
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
104 "minEvictableIdleTimeMillis",
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
105 ""
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
106 + GenericObjectPool.DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS));
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
107 boolean testWhileIdle = Boolean.parseBoolean(properties
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
108 .getProperty("testWhileIdle",
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
109 "" + GenericObjectPool.DEFAULT_TEST_WHILE_IDLE));
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 274
diff changeset
110
265
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
111 log.info("Maximum Number of active Connections: " + maxActive);
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
112 log.info("Maximum Number of waiting: " + maxWait);
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
113 log.info("Maximum Number of idle: " + maxIdle);
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
114 log.info("Minimum Number of idle: " + minIdle);
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
115 log.info("TestOnBorrow: " + testOnBorrow);
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
116 log.info("TestOnReturn: " + testOnReturn);
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
117 log.info("TimeBetweenEvictionRunsMillis: " + timeBetweenEvictionRunsMillis);
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
118 log.info("NumTestsPerEvictionRun: " + numTestsPerEvictionRun);
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
119 log.info("MinEvictableIdleTimeMillis: " + minEvictableIdleTimeMillis);
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
120 log.info("TestWhileIdle: " + testWhileIdle);
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 274
diff changeset
121
265
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
122 this.pool = new GenericObjectPool(poolableObjectFactory, maxActive,
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
123 GenericObjectPool.DEFAULT_WHEN_EXHAUSTED_ACTION, maxWait,
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
124 maxIdle, minIdle, testOnBorrow, testOnReturn,
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
125 timeBetweenEvictionRunsMillis, numTestsPerEvictionRun,
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
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 }

http://dive4elements.wald.intevation.org