annotate geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/connectionpool/ArcSDEPoolableObjectFactory.java @ 1127:ebeb56428409

Added license headers and license file. geo-backend/trunk@1261 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 02 Nov 2010 17:52:22 +0000
parents b757def3ff55
children
rev   line source
1127
ebeb56428409 Added license headers and license file.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 887
diff changeset
1 /*
ebeb56428409 Added license headers and license file.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 887
diff changeset
2 * Copyright (c) 2010 by Intevation GmbH
ebeb56428409 Added license headers and license file.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 887
diff changeset
3 *
ebeb56428409 Added license headers and license file.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 887
diff changeset
4 * This program is free software under the LGPL (>=v2.1)
ebeb56428409 Added license headers and license file.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 887
diff changeset
5 * Read the file LGPL.txt coming with the software for details
ebeb56428409 Added license headers and license file.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 887
diff changeset
6 * or visit http://www.gnu.org/licenses/ if it does not exist.
ebeb56428409 Added license headers and license file.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 887
diff changeset
7 */
ebeb56428409 Added license headers and license file.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 887
diff changeset
8
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
9 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
10
886
8b442223741c Ordered imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 885
diff changeset
11 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
12
8b442223741c Ordered imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 885
diff changeset
13 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
14
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
15 import java.sql.Connection;
265
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
16 import java.sql.SQLException;
886
8b442223741c Ordered imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 885
diff changeset
17
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
18 import java.util.Properties;
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 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
21
886
8b442223741c Ordered imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 885
diff changeset
22 import org.apache.log4j.Logger;
884
12f88239fb33 Updated Javadocs to the Listed Classes.
Tim Englich <tim.englich@intevation.de>
parents: 553
diff changeset
23
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
24 /**
884
12f88239fb33 Updated Javadocs to the Listed Classes.
Tim Englich <tim.englich@intevation.de>
parents: 553
diff changeset
25 * ArcSDE specific Implementation of an PoolableObjectFactory.
12f88239fb33 Updated Javadocs to the Listed Classes.
Tim Englich <tim.englich@intevation.de>
parents: 553
diff changeset
26 * This factory instantiate Objects of type ArcSDEConnection.
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 884
diff changeset
27 *
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
28 * @author <a href="mailto:tim.englich@intevation.de">Tim Englich</a>
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
29 * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a>
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
30 */
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
31 public class ArcSDEPoolableObjectFactory implements PoolableObjectFactory {
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
32
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
33 /**
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
34 * 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
35 */
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
36 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
37 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
38
884
12f88239fb33 Updated Javadocs to the Listed Classes.
Tim Englich <tim.englich@intevation.de>
parents: 553
diff changeset
39 /**
12f88239fb33 Updated Javadocs to the Listed Classes.
Tim Englich <tim.englich@intevation.de>
parents: 553
diff changeset
40 * 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
41 */
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 884
diff changeset
42 private int serverRoundtripInterval = 5;
884
12f88239fb33 Updated Javadocs to the Listed Classes.
Tim Englich <tim.englich@intevation.de>
parents: 553
diff changeset
43 /**
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 884
diff changeset
44 * 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
45 * 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
46 */
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
47 private long serverInactiveInterval = 5L*60L*1000L; // 5 minutes
274
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 URL to the ArcSDE Server
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 server = 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 Port the ArcSDE Server is connected to.
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 port = 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 Name of the Database
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 database = null;
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
60 /**
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
61 * The Username for the Authentication
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
62 */
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
63 private String username = null;
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 * The Credentials which belongs to the User
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
66 */
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
67 private String credentials = null;
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 884
diff changeset
68
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
69 /**
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
70 * Constructor of this Class
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
71 * @param properties the Properties which includes the ConnectionParams to the Database
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
72 */
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
73 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
74
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
75 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
76
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 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
78 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
79 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
80 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
81 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
82
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 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
84 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
85 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
86 properties.getProperty("serverInactiveInterval");
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 884
diff changeset
87
551
1f6e2b256247 Improved the Objectvalidation of the ArcSDE-Databaseconnections
Tim Englich <tim.englich@intevation.de>
parents: 274
diff changeset
88 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
89 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
90 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
91 Integer.parseInt(serverRoundtripIntervalValue);
551
1f6e2b256247 Improved the Objectvalidation of the ArcSDE-Databaseconnections
Tim Englich <tim.englich@intevation.de>
parents: 274
diff changeset
92 }
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 }
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 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
95 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
96 }
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
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 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
99 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
100 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
101 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
102 }
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 }
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 catch (NumberFormatException e) {
551
1f6e2b256247 Improved the Objectvalidation of the ArcSDE-Databaseconnections
Tim Englich <tim.englich@intevation.de>
parents: 274
diff changeset
105 log.error(e,e);
1f6e2b256247 Improved the Objectvalidation of the ArcSDE-Databaseconnections
Tim Englich <tim.englich@intevation.de>
parents: 274
diff changeset
106 }
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 884
diff changeset
107
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
108 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
109 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
110 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
111 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
112 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
113 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
114 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
115 }
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
116
274
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 * @see org.apache.commons.pool.PoolableObjectFactory#activateObject(java.lang.Object)
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
119 */
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
120 public void activateObject(Object arg0) throws Exception {
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
121 log.debug("ArcSDEPoolableObjectFactory.activateObject");
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
122 }
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
123
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
124 /**
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
125 * @see org.apache.commons.pool.PoolableObjectFactory#destroyObject(java.lang.Object)
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
126 */
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
127 public void destroyObject(Object arg0) throws Exception {
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
128 log.debug("ArcSDEPoolableObjectFactory.destroyObjectb");
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
129 if (arg0 instanceof ArcSDEConnection) {
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
130 ((ArcSDEConnection)arg0).close();
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
131 }else{
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
132 log.warn("Object cannot be handled");
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
133 }
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
134 }
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
135
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
136 /**
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
137 * @see org.apache.commons.pool.PoolableObjectFactory#makeObject()
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
138 */
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
139 public Object makeObject() throws Exception {
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
140 log.debug("ArcSDEPoolableObjectFactory.makeObject");
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
141 Connection con;
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
142 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
143 con = new ArcSDEConnection(
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 884
diff changeset
144 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
145 port,
885
1c3efbd2fc5a Removes trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 884
diff changeset
146 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
147 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
148 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
149 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
150 serverInactiveInterval);
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
151 }
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
152 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
153 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
154 "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
155 e.toString(), e);
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
156 }
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
157 return con;
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
158 }
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
159
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
160 /**
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
161 * @see org.apache.commons.pool.PoolableObjectFactory#passivateObject(java.lang.Object)
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
162 */
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
163 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
164
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 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
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 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
168 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
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
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 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
172 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
173 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
174 }
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 ((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
176 }
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
177 }
130
e4eacd613356 Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
178
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
179 /**
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
180 * @see org.apache.commons.pool.PoolableObjectFactory#validateObject(java.lang.Object)
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
181 */
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
182 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
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 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
185
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 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
187 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
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
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 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
191 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
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
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
194 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
195 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
196
5b536542ef56 Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 551
diff changeset
197 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
198 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
199
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 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
201 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
202 }
5b536542ef56 Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 551
diff changeset
203
5b536542ef56 Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 551
diff changeset
204 return isValid;
265
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
205 }
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
206 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
207 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
208 }
5b536542ef56 Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 551
diff changeset
209
5b536542ef56 Another attempt to fix gnv/issue34. Implemented an internal idle time checking.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 551
diff changeset
210 return false;
274
ff1b7967e6b9 General CodecCleanup:
Tim Englich <tim.englich@intevation.de>
parents: 265
diff changeset
211 }
265
e5379e129799 Fixed issue 34
Tim Englich <tim.englich@intevation.de>
parents: 130
diff changeset
212 }

http://dive4elements.wald.intevation.org