In fact I need to do something more. Suppose that I want to distribute my application, and the destination has a different DBMS (well at least he/she has a different username and password...). I think that configuring the context.xml file for a non-technical person is a bit difficult, and I wish to give an HTML front-end. Within one of my applications, I successfully managed to modify the "struts-config.xml" in the "data-sources" part, but to see the changes, I have to reload the application (ugly thing). If I use the "context.xml" (correct me if I am wrong) I have to redeploy the application (well at least I have to reload it). Another problem that I encountered is that when I have not the JDBC driver class specified in a "data-source" entry (neither in the "lib" directory, nor in the Java "ext" directory") the Struts application, in its entirety, fails to load. Now, how can I do to re-configure data sources without app reload? I am thinking about grabbing part of Struts code to make a "data source manager" and a simple web front-end. But, is there anything already done? (hopefully open source...) Maybe I got a bit off-topic ;-) Ciao Antonio Petrelli
> JNDI is not tied to Tomcat, but you have to set the datasource inside > the container (for example Tomcat). > In Tomcat, in order to set a datasource inside the application you have > to deploy with your application the following "context.xml" file inside > the "meta-inf" directory: > > <Context path="/ApplicationContextPath"> > <Resource name="jdbc/DatabaseSource" auth="Container" > type="javax.sql.DataSource"/> > <ResourceParams name="jdbc/DatabaseSource"> > <parameter> > <name>maxWait</name> > <value>5000</value> > </parameter> > <parameter> > <name>maxActive</name> > <value>100</value> > </parameter> > <parameter> > <name>password</name> > <value>manager</value> > </parameter> > <parameter> > <name>url</name> > <value>jdbc:oracle:thin:@127.0.0.1:1521:OracleDB</value> > </parameter> > <parameter> > <name>driverClassName</name> > <value>oracle.jdbc.driver.OracleDriver</value> > </parameter> > <parameter> > <name>maxIdle</name> > <value>20</value> > </parameter> > <parameter> > <name>username</name> > <value>system</value> > </parameter> > </ResourceParams> > > </Context> > If you use an Oracle DB. > > Note that: > - this datasource is available only for the application and not for all > Tomcat applications. > If you want to use a global datasource you can use the Tomcat web > amministration tool. > > - You have to know the url of the DB server. But you can set it using > the Tomcat web amministration tool. > > BR > /Amleto > > > > -----Messaggio originale----- > Da: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Inviato: marted́ 21 settembre 2004 11.32 > A: [EMAIL PROTECTED] > Oggetto: Re: Assigning a DataSource to a Business Delegate on startup > > > > you can use JNDI to get a DataSource (if you use tomcat see tomcat > > documentation in order to set the datasource). Here an example code to > > > use inside the singleton object: > > > > //Get DB from JNDI > > try { > > Context initCtx = new InitialContext(); > > Context envCtx = (Context) initCtx.lookup("java:comp/env"); > > DataSource dataSource = (DataSource) > > envCtx.lookup("jdbc/DatabaseSource"); > > > > } catch ( NamingException e ) { > > //Handle Source Code Exception > > } > > > > This is a nice solution, but I would like to use the DataSource > configuration in struts-config.xml. I noticed that there is the > "ConfigHelper.getDataSource()" method to get the default data source, > but I want to use a DataSource that I mapped with a key. By the way, the > solution above is not too tied to Tomcat? What if I want to distribute > my application? Do I have to configure Tomcat on the other machine? Ciao > Antonio Petrelli > > > > > > > > > -----Messaggio originale----- > > Da: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > > Inviato: marted́ 21 settembre 2004 11.11 > > A: [EMAIL PROTECTED] > > Oggetto: Assigning a DataSource to a Business Delegate on startup > > > > > > Hello there, > > is there a way I can assign a DataSource to a singleton object (i.e. a > > > Business Delegate) on startup? I know there is the "getDataSource" > > protected method in Action, but I have to pass the DataSource itself > > on each call of the delegate, or I have to check whether it has been > > already passed or not. Maybe it could be done with a plugin. In this > > case, is there already a package that I could use? And if not, how can > > > I access to a DataSource outside the Action class? Thanks in advance > > Ciao Antonio Petrelli > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]