The way I wrote InstanceKeyObjectFactory it expected that an instance of
PerUserPoolDataSource would be created and bound to a jndi context.  In
such a case, the Reference as returned by getReference() method of
InstanceKeyDataSource would be used and things should work properly.

It appears in the case of tomcat and using server.xml to specify the
datasource properties, tomcat does not bind a Reference created from the
Referenceable object to the jndi name.  Rather it creates a reference
based on the parameters given in server.xml and that is passed to the
ObjectFactory.

Something along the lines of what you show below will be needed, though
that would limit the app to one connection pool.  I was thinking of
creating a map, possibly keyed on description.  Though description is
not required, I'm not sure what else to use.

I will work on this more tonight,
john mcnally   

On Wed, 2003-10-08 at 13:43, Dirk Verbeeck wrote:
>   Any thoughts on how to fix this issue?
> or how the current code should work?
> 
> I got it to work by adding the following to 
> InstanceKeyObjectFactory.getObjectInstance
>                     if (obj == null) {
>                         PerUserPoolDataSource ds = new 
> PerUserPoolDataSource();
>                         ds.setDataSourceName((String)ra.getContent());
>                         obj = ds;
>                     }
> 
> and the following server.xml
>  <Resource name="jdbc/bookstoreCPDS" auth="Container"
>             type="org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS"/>
>   <ResourceParams name="jdbc/bookstoreCPDS">
>     <parameter>
>       <name>factory</name>
>       <value>org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS</value>
>     </parameter>
>         <parameter><name>user</name><value>sa</value></parameter>
>         <parameter><name>password</name><value></value></parameter>
>         <parameter>
>             <name>driver</name>
>             <value>org.hsqldb.jdbcDriver</value></parameter>
>         <parameter>
>              <name>url</name>
>              <value>jdbc:hsqldb:database</value>
>         </parameter>
>   </ResourceParams>
> <Resource name="jdbc/PerUserBookstore" auth="SERVLET"
>                     
> type="org.apache.commons.dbcp.datasources.PerUserPoolDataSource"/>
> <ResourceParams name="jdbc/PerUserBookstore">
>   <parameter>
>     <name>factory</name>
>     
> <value>org.apache.commons.dbcp.datasources.InstanceKeyObjectFactory</value>
>   </parameter>
>   <parameter>
>     <name>instanceKey</name>
>     <value>java:/comp/env/jdbc/bookstoreCPDS</value>
>   </parameter>
> </ResourceParams>
> 
> I did a quick test and found no problems this way.
> Without the extra code I can't get it to work but maybe there is another 
> way to automagically create the PerUserPoolDataSource.
> 
> Dirk
> 



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

Reply via email to