annotate geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/connectionpool/ArcSDEPoolableObjectFactory.java @ 886:8b442223741c

Ordered imports. Removed empty headers. geo-backend/trunk@856 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 29 Mar 2010 09:22:07 +0000
parents 1c3efbd2fc5a
children b757def3ff55
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.exception.ConnectionException;
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.sde.datasources.ArcSDEConnection;
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;
265
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
8 import java.sql.SQLException;
886
8b442223741c Ordered imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 885
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;
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
13
886
8b442223741c Ordered imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 885
diff changeset
14 import org.apache.log4j.Logger;
884
12f88239fb33 Updated Javadocs to the Listed Classes.
Tim Englich <tim.englich@intevation.de>
parents: 553
diff changeset
15
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
16 /**
884
12f88239fb33 Updated Javadocs to the Listed Classes.
Tim Englich <tim.englich@intevation.de>
parents: 553
diff changeset
17 * ArcSDE specific Implementation of an PoolableObjectFactory.
12f88239fb33 Updated Javadocs to the Listed Classes.
Tim Englich <tim.englich@intevation.de>
parents: 553
diff changeset
18 * This factory instantiate Objects of type ArcSDEConnection.
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 884
diff changeset
19 *
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
20 * @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
21 * @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
22 */
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
23 public class ArcSDEPoolableObjectFactory implements PoolableObjectFactory {
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
24
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
25 /**
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
26 * 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
27 */
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
28 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
29 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
30
884
12f88239fb33 Updated Javadocs to the Listed Classes.
Tim Englich <tim.englich@intevation.de>
parents: 553
diff changeset
31 /**
12f88239fb33 Updated Javadocs to the Listed Classes.
Tim Englich <tim.englich@intevation.de>
parents: 553
diff changeset
32 * The 5 seconds are inspired by GeoTools's testServer() usage.
12f88239fb33 Updated Javadocs to the Listed Classes.
Tim Englich <tim.englich@intevation.de>
parents: 553
diff changeset
33 */
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 884
diff changeset
34 private int serverRoundtripInterval = 5;
884
12f88239fb33 Updated Javadocs to the Listed Classes.
Tim Englich <tim.englich@intevation.de>
parents: 553
diff changeset
35 /**
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 884
diff changeset
36 * The value of the maximum Time a Connection is allowed to
884
12f88239fb33 Updated Javadocs to the Listed Classes.
Tim Englich <tim.englich@intevation.de>
parents: 553
diff changeset
37 * be inactive without the validation of the Connection.
12f88239fb33 Updated Javadocs to the Listed Classes.
Tim Englich <tim.englich@intevation.de>
parents: 553
diff changeset
38 */
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
39 private long serverInactiveInterval = 5L*60L*1000L; // 5 minutes
274
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 URL to the ArcSDE Server
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 server = 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 Port the ArcSDE Server is connected to.
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 port = 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 Name of the Database
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 database = null;
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
52 /**
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
53 * The Username for the Authentication
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
54 */
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
55 private String username = null;
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 * The Credentials which belongs to the User
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
58 */
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
59 private String credentials = null;
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 884
diff changeset
60
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
61 /**
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
62 * Constructor of this Class
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
63 * @param properties the Properties which includes the ConnectionParams to the Database
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
64 */
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
65 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
66
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
67 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
68
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 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
70 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
71 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
72 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
73 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
74
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 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
76 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
77 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
78 properties.getProperty("serverInactiveInterval");
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 884
diff changeset
79
551
1f6e2b256247 Improved the Objectvalidation of the ArcSDE-Databaseconnections
Tim Englich <tim.englich@intevation.de>
parents: 274
diff changeset
80 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
81 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
82 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
83 Integer.parseInt(serverRoundtripIntervalValue);
551
1f6e2b256247 Improved the Objectvalidation of the ArcSDE-Databaseconnections
Tim Englich <tim.englich@intevation.de>
parents: 274
diff changeset
84 }
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
85 }
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 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
87 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
88 }
5b536542ef56 Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 551
diff changeset
89
5b536542ef56 Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 551
diff changeset
90 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
91 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
92 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
93 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
94 }
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 }
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 catch (NumberFormatException e) {
551
1f6e2b256247 Improved the Objectvalidation of the ArcSDE-Databaseconnections
Tim Englich <tim.englich@intevation.de>
parents: 274
diff changeset
97 log.error(e,e);
1f6e2b256247 Improved the Objectvalidation of the ArcSDE-Databaseconnections
Tim Englich <tim.englich@intevation.de>
parents: 274
diff changeset
98 }
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 884
diff changeset
99
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
100 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
101 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
102 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
103 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
104 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
105 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
106 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
107 }
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
108
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
109 /**
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
110 * @see org.apache.commons.pool.PoolableObjectFactory#activateObject(java.lang.Object)
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
111 */
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
112 public void activateObject(Object arg0) throws Exception {
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
113 log.debug("ArcSDEPoolableObjectFactory.activateObject");
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
114 }
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
115
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
116 /**
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
117 * @see org.apache.commons.pool.PoolableObjectFactory#destroyObject(java.lang.Object)
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
118 */
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
119 public void destroyObject(Object arg0) throws Exception {
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
120 log.debug("ArcSDEPoolableObjectFactory.destroyObjectb");
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
121 if (arg0 instanceof ArcSDEConnection) {
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
122 ((ArcSDEConnection)arg0).close();
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
123 }else{
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
124 log.warn("Object cannot be handled");
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
125 }
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
126 }
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
127
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
128 /**
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
129 * @see org.apache.commons.pool.PoolableObjectFactory#makeObject()
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
130 */
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
131 public Object makeObject() throws Exception {
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
132 log.debug("ArcSDEPoolableObjectFactory.makeObject");
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
133 Connection con;
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
134 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
135 con = new ArcSDEConnection(
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 884
diff changeset
136 server,
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 port,
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 884
diff changeset
138 database,
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
139 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
140 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
141 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
142 serverInactiveInterval);
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
143 }
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
144 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
145 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
146 "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
147 e.toString(), e);
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
148 }
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
149 return con;
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
150 }
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
151
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
152 /**
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
153 * @see org.apache.commons.pool.PoolableObjectFactory#passivateObject(java.lang.Object)
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
154 */
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
155 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
156
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 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
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 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
160 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
161 }
5b536542ef56 Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 551
diff changeset
162
5b536542ef56 Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 551
diff changeset
163 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
164 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
165 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
166 }
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 ((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
168 }
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
169 }
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
170
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
171 /**
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
172 * @see org.apache.commons.pool.PoolableObjectFactory#validateObject(java.lang.Object)
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
173 */
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
174 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
175
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 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
177
5b536542ef56 Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 551
diff changeset
178 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
179 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
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
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 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
183 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
184 }
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
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
186 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
187 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
188
5b536542ef56 Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 551
diff changeset
189 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
190 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
191
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 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
193 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
194 }
5b536542ef56 Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 551
diff changeset
195
5b536542ef56 Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 551
diff changeset
196 return isValid;
265
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
197 }
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
198 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
199 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
200 }
5b536542ef56 Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 551
diff changeset
201
5b536542ef56 Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 551
diff changeset
202 return false;
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
203 }
265
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
204 }

http://dive4elements.wald.intevation.org