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]

Reply via email to