From: thomas at tada.se (Thomas Hallgren) Date: Tue, 21 Mar 2006 08:14:50 +0100 Subject: [Pljava-dev] pljava reninitializing jdbc connection pool for every invocation In-Reply-To: <6992E470F12A444BB787B5C937B9D4DF03C489B1@ca-mail1.cis.local> References: <6992E470F12A444BB787B5C937B9D4DF03C489B1@ca-mail1.cis.local> Message-ID: <441FA7EA.3010903@tada.se> Hi Sriram, PostgreSQL spawns a new backend process each time you make a connection. PL/Java will initialize a Java Virtual Machine instance the first time you call a PL/Java function using a connection. The JVM becomes a part of the backend process and its lifespan is thus equal to the lifespan of your connection. So while its indeed possible to create singletons in PL/Java, such a singleton is per connection. From the looks of it, you are trying to set up a pool of DataSources that will allow you to connect to other PostgreSQL instances from within PL/Java. I'm a bit curious why you would like to do that. Can you shed some light on what it is you want to do? Perhaps I can help suggesting an alternative. Kind Regards, Thomas Hallgren Sriram Dandapani wrote: > > Hi > > > > Following is the scenario: > > > > A plpgsql function calls a java method using pljava. The > initialization of the jdbc pool seems to be happening with every call > to the getConnection method. > > Is there a way to implement singletons within pljava > > > > This is the java code that initializes the pool > > > > private static Jdbc3PoolingDataSource pool; > > private static Logger logger = Logger.getLogger(PostgresAdapter.class); > > private static PropertyResourceBundle resourceBundle; > > > > public static void setupPool() throws Exception { > > logger.info("***setting up > postgres pool"); > > PropertyResourceBundle > resourceBundle = null; > > resourceBundle = new > PropertyResourceBundle(new FileInputStream("postgres-ds.properties")); > > pool = new Jdbc3PoolingDataSource(); > > logger.info("***finished setting > up postgres pool"); > > > pool.setServerName(resourceBundle.getString("serverName")); > > > pool.setPortNumber(Integer.parseInt(resourceBundle.getString("portNumber"))); > > > pool.setDatabaseName(resourceBundle.getString("databaseName")); > > > pool.setUser(resourceBundle.getString("user")); > > > pool.setPassword(resourceBundle.getString("password")); > > pool.setMaxConnections(25); > > } > > > > public static Connection getConnection() > throws Exception { > > if(pool == null) { > > setupPool(); > > } > > Connection con = pool.getConnection(); > > con.setAutoCommit(false); > > return con; > > } > > > > Many thx in advance for answers > > > > Sriram > > > > ------------------------------------------------------------------------ > > _______________________________________________ > Pljava-dev mailing list > Pljava-dev at gborg.postgresql.org > http://gborg.postgresql.org/mailman/listinfo/pljava-dev >