Mercurial > dive4elements > gnv-client
annotate geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/connectionpool/ArcSDEPoolableObjectFactory.java @ 661:f99d8f92a640
Implemented Support of MultiPolygons.
geo-backend/trunk@750 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Tim Englich <tim.englich@intevation.de> |
---|---|
date | Mon, 08 Mar 2010 15:39:58 +0000 |
parents | 5b536542ef56 |
children | 12f88239fb33 |
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 |
553
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
3 import de.intevation.gnv.geobackend.base.connectionpool.exception.ConnectionException; |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
4 |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
5 import de.intevation.gnv.geobackend.sde.datasources.ArcSDEConnection; |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
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; |
265 | 8 import java.sql.SQLException; |
553
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
9 |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
10 import java.util.Properties; |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
11 |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
12 import org.apache.commons.pool.PoolableObjectFactory; |
553
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
13 |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
14 import org.apache.log4j.Logger; |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
15 |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
16 /** |
553
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
17 * @author Tim Englich (tim.englich@intevation.de) |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
18 * @author Sascha L. Teichmann (sascha.teichmann@intevation.de) |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
19 */ |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
20 public class ArcSDEPoolableObjectFactory implements PoolableObjectFactory { |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
21 |
274
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
22 /** |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
23 * 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
|
24 */ |
553
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
25 private static Logger log = Logger.getLogger( |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
26 ArcSDEPoolableObjectFactory.class); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
27 |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
28 // The 5 seconds are inspired by GeoTools's testServer() usage. |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
29 private int serverRoundtripInterval = 5; |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
30 |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
31 private long serverInactiveInterval = 5L*60L*1000L; // 5 minutes |
274
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
32 /** |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
33 * The URL to the ArcSDE Server |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
34 */ |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
35 private String server = null; |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
36 /** |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
37 * The Port the ArcSDE Server is connected to. |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
38 */ |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
39 private String port = null; |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
40 /** |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
41 * The Name of the Database |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
42 */ |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
43 private String database = null; |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
44 /** |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
45 * The Username for the Authentication |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
46 */ |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
47 private String username = null; |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
48 /** |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
49 * The Credentials which belongs to the User |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
50 */ |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
51 private String credentials = null; |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
52 |
274
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
53 /** |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
54 * Constructor of this Class |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
55 * @param properties the Properties which includes the ConnectionParams to the Database |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
56 */ |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
57 public ArcSDEPoolableObjectFactory(Properties properties) { |
553
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
58 |
274
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
59 log.debug("ArcSDEPoolableObjectFactory.Constructor"); |
553
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
60 |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
61 server = properties.getProperty("server"); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
62 port = properties.getProperty("port"); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
63 database = properties.getProperty("database"); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
64 username = properties.getProperty("username"); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
65 credentials = properties.getProperty("credentials"); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
66 |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
67 String serverRoundtripIntervalValue = |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
68 properties.getProperty("serverRoundtripInterval"); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
69 String serverInactiveIntervalValue = |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
70 properties.getProperty("serverInactiveInterval"); |
274
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
71 |
551
1f6e2b256247
Improved the Objectvalidation of the ArcSDE-Databaseconnections
Tim Englich <tim.englich@intevation.de>
parents:
274
diff
changeset
|
72 try { |
553
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
73 if (serverRoundtripIntervalValue != null) { |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
74 serverRoundtripInterval = |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
75 Integer.parseInt(serverRoundtripIntervalValue); |
551
1f6e2b256247
Improved the Objectvalidation of the ArcSDE-Databaseconnections
Tim Englich <tim.englich@intevation.de>
parents:
274
diff
changeset
|
76 } |
553
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
77 } |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
78 catch (NumberFormatException e) { |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
79 log.error(e,e); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
80 } |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
81 |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
82 try { |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
83 if (serverInactiveIntervalValue != null) { |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
84 serverInactiveInterval = 1000L * // input in seconds! |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
85 Long.parseLong(serverInactiveIntervalValue); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
86 } |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
87 } |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
88 catch (NumberFormatException e) { |
551
1f6e2b256247
Improved the Objectvalidation of the ArcSDE-Databaseconnections
Tim Englich <tim.englich@intevation.de>
parents:
274
diff
changeset
|
89 log.error(e,e); |
1f6e2b256247
Improved the Objectvalidation of the ArcSDE-Databaseconnections
Tim Englich <tim.englich@intevation.de>
parents:
274
diff
changeset
|
90 } |
1f6e2b256247
Improved the Objectvalidation of the ArcSDE-Databaseconnections
Tim Englich <tim.englich@intevation.de>
parents:
274
diff
changeset
|
91 |
274
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
92 log.info("ArcSDEPoolableObjectFactory initialized"); |
553
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
93 log.info("Server: " + server); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
94 log.info("Port: " + port); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
95 log.info("Database: " + database); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
96 log.info("User: " + username); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
97 log.info("Roundtrip check interval: " + serverRoundtripInterval); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
98 log.info("Inactive check interval: " + serverInactiveInterval); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
99 } |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
100 |
274
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
101 /** |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
102 * @see org.apache.commons.pool.PoolableObjectFactory#activateObject(java.lang.Object) |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
103 */ |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
104 public void activateObject(Object arg0) throws Exception { |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
105 log.debug("ArcSDEPoolableObjectFactory.activateObject"); |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
106 } |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
107 |
274
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
108 /** |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
109 * @see org.apache.commons.pool.PoolableObjectFactory#destroyObject(java.lang.Object) |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
110 */ |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
111 public void destroyObject(Object arg0) throws Exception { |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
112 log.debug("ArcSDEPoolableObjectFactory.destroyObjectb"); |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
113 if (arg0 instanceof ArcSDEConnection) { |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
114 ((ArcSDEConnection)arg0).close(); |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
115 }else{ |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
116 log.warn("Object cannot be handled"); |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
117 } |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
118 } |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
119 |
274
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
120 /** |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
121 * @see org.apache.commons.pool.PoolableObjectFactory#makeObject() |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
122 */ |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
123 public Object makeObject() throws Exception { |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
124 log.debug("ArcSDEPoolableObjectFactory.makeObject"); |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
125 Connection con; |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
126 try { |
553
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
127 con = new ArcSDEConnection( |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
128 server, |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
129 port, |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
130 database, |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
131 username, |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
132 credentials, |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
133 serverRoundtripInterval, |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
134 serverInactiveInterval); |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
135 } |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
136 catch (ConnectionException e) { |
553
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
137 throw new ConnectionException( |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
138 "Establishing a connection to database failed: " + |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
139 e.toString(), e); |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
140 } |
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
141 return con; |
274
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
142 } |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
143 |
274
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
144 /** |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
145 * @see org.apache.commons.pool.PoolableObjectFactory#passivateObject(java.lang.Object) |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
146 */ |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
147 public void passivateObject(Object arg0) throws Exception { |
553
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
148 |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
149 boolean debug = log.isDebugEnabled(); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
150 |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
151 if (debug) { |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
152 log.debug("ArcSDEPoolableObjectFactory.passivateObject"); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
153 } |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
154 |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
155 if (arg0 instanceof ArcSDEConnection) { |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
156 if (debug) { |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
157 log.debug(" touching connection"); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
158 } |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
159 ((ArcSDEConnection)arg0).touch(); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
160 } |
274
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
161 } |
130
e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
162 |
274
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
163 /** |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
164 * @see org.apache.commons.pool.PoolableObjectFactory#validateObject(java.lang.Object) |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
165 */ |
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
166 public boolean validateObject(Object arg0) { |
553
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
167 |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
168 boolean debug = log.isDebugEnabled(); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
169 |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
170 if (debug) { |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
171 log.debug("ArcSDEPoolableObjectFactory.validateObject"); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
172 } |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
173 |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
174 if (!(arg0 instanceof ArcSDEConnection)) { |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
175 return false; |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
176 } |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
177 |
274
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
178 try { |
553
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
179 ArcSDEConnection con = (ArcSDEConnection)arg0; |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
180 |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
181 boolean isValid = |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
182 con.isActive() && con.isValid(serverRoundtripInterval); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
183 |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
184 if (!isValid && debug) { |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
185 log.debug("connection is invalid!"); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
186 } |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
187 |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
188 return isValid; |
265 | 189 } |
553
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
190 catch (SQLException sqle) { |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
191 log.error(sqle, sqle); |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
192 } |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
193 |
5b536542ef56
Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
551
diff
changeset
|
194 return false; |
274
ff1b7967e6b9
General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents:
265
diff
changeset
|
195 } |
265 | 196 } |