Mercurial > dive4elements > gnv-client
view geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/connectionpool/ArcSDEConnectionPool.java @ 130:e4eacd613356
Implementierung Datenzugriff auf die ArcSDE über java.sql. Methodiken
ChangeLog wird nachgereicht da SubversionClientincompatiblitäten vorhanden sind.
geo-backend/trunk@7 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Tim Englich <tim.englich@intevation.de> |
---|---|
date | Wed, 02 Sep 2009 15:15:52 +0000 |
parents | |
children | e5379e129799 |
line wrap: on
line source
package de.intevation.gnv.geobackend.sde.connectionpool; import java.sql.Connection; import java.util.Properties; import org.apache.commons.pool.PoolableObjectFactory; import org.apache.commons.pool.impl.GenericObjectPool; import org.apache.log4j.Logger; import de.intevation.gnv.geobackend.base.connectionpool.ConnectionPool; import de.intevation.gnv.geobackend.base.connectionpool.exception.ConnectionException; /** *This is the ArcSDE specific implementation of the Interface ConnectionPool * @author Tim Englich <tim.englich@intevation.de> */ public class ArcSDEConnectionPool implements ConnectionPool { /** * the logger, used to log exceptions and additonaly information */ private static Logger log = Logger.getLogger(ArcSDEPoolableObjectFactory.class); /** * The Pool which stores the Connections to the ArcSDE Backend */ private GenericObjectPool pool = null; /** * @see de.intevation.gnv.geobackend.base.connectionpool.ConnectionPool#closeConnection(java.lang.Object) */ public void closeConnection(Connection connection) throws ConnectionException { try { //TODO: Muss Connection geschlossen werden? this.pool.returnObject(connection); } catch (Exception e) { log.error(e,e); throw new ConnectionException(e); } } /** * @see de.intevation.gnv.geobackend.base.connectionpool.ConnectionPool#getConnection(java.lang.String) */ public synchronized Connection getConnection(String connectionID) throws ConnectionException{ try { Object object = this.pool.borrowObject(); if (object instanceof Connection){ return (Connection)object; }else{ throw new ConnectionException("Created Object is not an java.sql.Connection"); } } catch (Exception e) { log.error(e,e); throw new ConnectionException(e); } } /** * @see de.intevation.gnv.geobackend.base.connectionpool.ConnectionPool#initialize(java.util.Properties) */ public void initialize(Properties properties) { log.info("ArcSDEConnectionPool.initialize has been called"); log.info("ConnectionPool will be initialized"); PoolableObjectFactory poolableObjectFactory = new ArcSDEPoolableObjectFactory(properties); int maxActive = Integer.parseInt(properties.getProperty("maxActive", "10")); log.info("Maximum Number of active Connections: "+maxActive); // TODO weitere Werte einparsen und setzen. this.pool = new GenericObjectPool(poolableObjectFactory,maxActive); } }