Got it.  

If you only need connections, you can write your own provider class which
returns connections (or DataSources) based on a name-to-database mapping of
your chosing. 

Or, if you really must provide each connection as a JNDI DataSource, I would
investigate writing your own JNDI provider that operates on the single,
manual connection, and returns DataSources based on the information found
via that connection.  You can borrow some code from javaranch.com's
jrunittesthelper, a package which provides JNDI lookups for JUnit test
cases.


Tim

-----Original Message-----
From: Rob Gregory [mailto:[EMAIL PROTECTED] 
Sent: Monday, January 23, 2006 4:28 AM
To: Tomcat Users List
Subject: RE: Setting up connection pools "on the fly"...


Hi Tim,

Thanks for the assistance.  Our basic requirement is during tomcat
load/start-up to query the database (with a single manual connection) and
read the available database environments that have been pre-configured. Then
create these dynamically so they are available as if they had been
configured within conf/../context.xml etc. 

I managed to get this kind of working buy rewriting the config details
during start-up but it seems at this time it's too late for Tomcat to use
these (i.e. the connection pools are already set up). They would become
available the next time tomcat was restarted... I then tried adding the
config files as a 'watched' resource but this lead to some strange
behaviour.

While in most cases we don't change servers as such - we do provide our own
tools to manage the database details such as username, password etc and
these need to updated without modifying the config files directly. 

Hopes this clarifies the problem a little (shout if you need further or
alternative explanations).

Thanks again for your help.
Rob



-----Original Message-----
From: Tim Lucia [mailto:[EMAIL PROTECTED] 
Sent: 22 January 2006 23:42
To: 'Tomcat Users List'
Subject: RE: Setting up connection pools "on the fly"...

How often do you change servers?  What you describe below can be handled by
editing the appropriate context / resource and restarting Tomcat. Perhaps
more detail on the business requirement, rather then stating "I must define
them on the fly" would enable us to give you a better solution.

-----Original Message-----
From: Rob Gregory [mailto:[EMAIL PROTECTED]
Sent: Sunday, January 22, 2006 5:41 PM
To: 'Tomcat Users List'
Subject: RE: Setting up connection pools "on the fly"...


"One doesn't typically add new database servers "on the fly", and this
option would require defining a new JNDI datasource for a new server"

That's exactly what I need to be able to do... Is this possible on Tomcat
start-up as it doesn't have to strictly on the fly just on start-up. I
mainly need to remove the configuration details from the context.xml file
and read these from the database before tomcat starts and creates the pools.

Any help much appreciated.

Rob

-----Original Message-----
From: Tim Lucia [mailto:[EMAIL PROTECTED] 
Sent: 22 January 2006 14:21
To: 'Tomcat Users List'
Subject: RE: Setting up connection pools "on the fly"...

The point of connection pooling is to eliminate the overhead of setting up
and tearing down a (TCP, database, AAA) connection for every database
transaction (typically, the web request in a web app.)  This can add 100s or
1000s of milliseconds to every request, and is quite expensive.

If you can architect your application so that there is a JNDI data source
for each server (database server, instance, etc.) with its own pool of
connections, you can always call setCatalog
(http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Connection.html#setCat
alog
(java.lang.String)) on the connection returned from the pool.  One doesn't
typically add new database servers "on the fly", and this option would
require defining a new JNDI datasource for a new server.  Of course all
catalogs processed in this way must be accesible to the user specified in
the connnection pool properties.  I would suggest setting the defaultCatalog
property as well, so that you are not accidentally connected to the
last-used catalog from the previous borrower of the connection.

Tim

-----Original Message-----
From: Rob Gregory [mailto:[EMAIL PROTECTED] 
Sent: Sunday, January 22, 2006 8:23 AM
To: 'Tomcat Users List'
Subject: RE: Setting up connection pools "on the fly"...


I also have the same requirement (to provide connection pools on the
fly)
but also need these pools available to Cocoon (so need them to map to the
standard jdbc/mypool jndi location. 

Tomcat declares it's initial context as being readonly so I have no idea how
to go about binding the pools I have created dynamically.

Any pointers would be a great help.

Thanks in advance
Rob


-----Original Message-----
From: Alex Turner [mailto:[EMAIL PROTECTED] 
Sent: 20 January 2006 22:50
To: Tomcat Users List
Subject: Re: Setting up connection pools "on the fly"...

Maybe you don't even want a connection pool, rather a simple non-pooling
datasource.  If you generate a pool of connections for each and every
database, you may end up with a great many open connections to your database
server that hardly ever get used.  I don't know too much about MySQL, but in
most other databases, each connection has certain allocated resources, and
the database typically limits the max connections.  I have a similar
situation, but I use a simple datasource, and a servlet to create a new
datasource for each database on initialization based on a database entries.
You can easily create a datasource on the fly in a servlet.  I don't know if
this is the 'right' answer, but it works for me.

Alex


On 1/20/06, Warrick Wilson <[EMAIL PROTECTED]> wrote:
> I've got a project where there's a basic interface, with some basic 
> database access. However, when someone "signs up", then a new MySQL 
> database will be allocated for them. There's security associated with 
> it, and the user will have to log in to identify himself.
>
> How can I create a new connection pool for that new database for my 
> web app? My current pool is set up in context.xml - do I modify that 
> on the fly from my web app?
>
> What I'm doing currently is figuring out who the user is and which 
> database he's associated with, and when I do any database work, the 
> first statement is "USE <databasename>" to get the proper database.
>
> Is there a better approach? More like a proper approach? (Says he who 
> isn't sure he fully understands connection pools yet....)
>
> --
> Warrick Wilson
> [EMAIL PROTECTED]
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to