agora inbox for pljava-dev@postgresql.org  
help / color / mirror / Atom feed
Subject: [Pljava-dev] pljava reninitializing jdbc connection pool for every	invocation
Date: Tue, 21 Mar 2006 08:14:50 +0100
Message-ID: <441FA7EA.3010903@tada.se> (raw)
In-Reply-To: <6992E470F12A444BB787B5C937B9D4DF03C489B1@ca-mail1.cis.local>
References: <6992E470F12A444BB787B5C937B9D4DF03C489B1@ca-mail1.cis.local>

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
>   





view thread (5+ messages)  latest in thread

Message-ID: <441FA7EA.3010903@tada.se>
Permalink:  ../441FA7EA.3010903@tada.se/
Also on:    postgresql.org/message-id/441FA7EA.3010903@tada.se

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pljava-dev@postgresql.org
  Subject: Re: [Pljava-dev] pljava reninitializing jdbc connection pool for every	invocation
  In-Reply-To: <441FA7EA.3010903@tada.se>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox