Thanks David,

I appreciate you confirming the read-only status of the Tomcat context. 

Is there a reason for this being readonly as I ideally need to bind
The dynamic source to the standard context (i.e. literally replace any
defined within the context.xml file) as the datasource is used by my own
classes AND xsp's provided by Cocoon and I'm not sure Cocoon can be
configured to obtain connections from the ServletContext. At least I have
something else to 'Google' during my lack of life ;o)

Cheers
Rob

-----Original Message-----
From: David Smith [mailto:[EMAIL PROTECTED] 
Sent: 17 January 2006 14:09
To: Tomcat Users List
Subject: Re: Dynamic Datasource Configuration - JNDI read only context

Your results are correct.  The JNDI provided by tomcat is read-only.  
You'll need to put your DataSource object into your own JNDI context or 
store the DataSource in your ServletContext.  Personally I like the idea 
of putting the javax.sql.DataSource object in the ServletContext and 
using it from there as needed.

--David

Rob Gregory wrote:

>Hi Guys and thanks in advance for any pointers.
>
> 
>
>I am running Tomcat 5.5.9 and would like to remove the need to specify
>database configuration details within the context.xml file e.g.
>
> 
>
>  <Resource
>
>    name="jdbc/one"
>
>    type="javax.sql.DataSource"
>
>    username="user"
>
>    password="pass"
>
>    driverClassName="oracle.jdbc.driver.OracleDriver"
>
>    maxIdle="2"
>
>    maxWait="5000"
>
>    maxActive="50"
>
>    validationQuery="SELECT count(*) FROM dual"
>
>    url="jdbc:oracle:thin:@server:1521:sid"
>
>  />
>
> 
>
>I need to provide (apache commons db) datasources 'on the fly' and after
>trying every thing I can think of such as trying to register the details
>against JNDI as follows:-
>
> 
>
>              //Hashtable env = new Hashtable();
>               //env.put(Context.INITIAL_CONTEXT_FACTORY,
>"org.apache.naming.java.javaURLContextFactory");
>               //env.put(Context.URL_PKG_PREFIXES, "org.apache.naming");
>               
> 
>//System.setProperty(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.fscontex
t
>.RefFSContextFactory");
> 
>//System.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.apache.naming.jav
a
>.javaURLContextFactory");
>                
>               //System.setProperty(Context.PROVIDER_URL, " <file:///\\tmp>
>file:///tmp");
>               //InitialContext ic = null;
>               Context ic = null;
>               try {
>                 //ic = new InitialContext(env);  
>                 ic = new InitialContext();
>                 
>                 if (log.isDebugEnabled()) log.debug("Creating logindb
>references");
>                 // Construct DriverAdapterCPDS reference
>                 Reference cpdsRef = new
>Reference("org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS",
>                   "org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS",
>null);
>                 cpdsRef.add(new StringRefAddr("driver", strDriver));
>                 cpdsRef.add(new StringRefAddr("url", strUrl));
>                 cpdsRef.add(new StringRefAddr("user",
>objLoginDB.getUsername()));
>                 cpdsRef.add(new StringRefAddr("password",
>objLoginDB.getPassword()));
>                 //ic.rebind("java:comp/env/jdbc/cpdslogindb", cpdsRef);
>                 ic.bind("java:/comp/env/jdbc/cpdslogindb", cpdsRef);
>                 
>                 if (log.isDebugEnabled()) log.debug("Creating connection
>pool");
>                 // Construct PerUserPoolDataSource reference
>                 Reference ref = new
>Reference("org.apache.commons.dbcp.datasources.PerUserPoolDataSource",
> 
>"org.apache.commons.dbcp.datasources.PerUserPoolDataSourceFactory", null);
>                 ref.add(new StringRefAddr("dataSourceName",
>"java:/comp/env/jdbc/cpdslogindb"));
>                 ref.add(new StringRefAddr("defaultMaxActive",
>Config.getParam("pool.max.active")));
>                 ref.add(new StringRefAddr("defaultMaxIdle",
>Config.getParam("pool.max.idle")));
>                 ref.add(new StringRefAddr("defaultMaxWait",
>Config.getParam("pool.max.wait")));
>                 //ic.rebind("jdbc/" + "logindb", ref); 
>                 //ic.bind("logindb", ref);
>                 ic.bind("java:/comp/env/jdbc/logindb", ref);
>                 
>               } catch (NamingException ne) {
>                 log.error("Failed while doing JNDI on connection
logindb");
>                 log.debug(ne.getMessage(), ne);             
>               }
>
> 
>
>The results of this indicate that the Tomcat Initial Context seems to be
>'READ-ONLY' ??
>
> 
>
>Any pointers into what I am doing wrong are greatly appreciated.
>
> 
>
>Thanks
>
>Rob
>
> 
>
>
>  
>


---------------------------------------------------------------------
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