Hi Don,

Until now, I configured the datasource through the <resource> tag in the
context.xml file (in the META-INF directory of my app) and through the
web.xml with the <resource-ref> tag like this :

context.xml :
<Resource     name="jdbc/myDatabase"
                    auth="Container"
                    type="javax.sql.DataSource"
                    username="user"
                    password="password"
                    driverClassName="org.postgresql.Driver"
                    url="jdbc:postgresql://localhost:5432/test"
                    maxActive="8" maxIdle="4"/>

web.xml :
<resource-ref>
             <description/>
             <res-ref-name>jdbc/myDatabase</res-ref-name>
             <res-type>javax.sql.DataSource</res-type>
             <res-auth>Container</res-auth>
</resource-ref>

Then I was able to get connections by getting an access to JNDI with
something like :
DataSource myDS = new
InitialContext().lookup("java:comp/env/jdbc/myDatabase");

The thing that I don't like in this way of configuring my DB access is that
the name of the resource "myDatabase" is hardcoded. So in fact I would like
to specify the name of the resource in a file (web.xml ?) instead of having
it hard coded. But, I'm wondering if this is the right way of configuring?
Could you explain me how to do this the right way?
Thanks very much

Sebastien



On 12/14/06, Don Brown <[EMAIL PROTECTED]> wrote:

One word, eh? ServletContextListener.  Use a ServletContextListener to
load your properties files and pass the name to it via servlet context
parameter.  There are ways to use Struts classes to initialize and
load the data, but I wouldn't recommend it when there are solutions
that are just as effective, but don't rely on Struts.

See also http://www.onjava.com/pub/a/onjava/2001/04/12/listeners.html
or google for ServletContextListener

BTW, this is the approach Spring, MyFaces, and I imagine many other
frameworks and applications use to load their data on startup.

Don

On 12/13/06, Sébastien LABEY <[EMAIL PROTECTED]> wrote:
> Thank you Don,
>
> In fact, I don't want to have the name of my properties file to be hard
> coded... So I thought about the "key initialization parameters" that
allowed
> me to set the name of the file and the Java class to load it.
> Do you think it is a right way to do it, or maybe should I think about a
> Listener like in the MailReader app to load the database?
> In one word, what's the best way to do it?
>
> Thanks
>
> On 12/13/06, Don Brown <[EMAIL PROTECTED]> wrote:
> >
> > If you just need to load a few properties, you shouldn't have to touch
> > Struts at all.  Just create a file, say,
> > WEB-INF/classes/db.properties, then load it in your Java code via:
> >
> > Properties props = new Properties();
> > props.load(this.getClass
> > ().getClassLoader().getResourceAsStream("/db.properties");
> >
> > and away you go...
> >
> > Don
> >
> > On 12/13/06, Sébastien LABEY <[EMAIL PROTECTED]> wrote:
> > > Hi all,
> > >
> > > I'd like to load a file containing the parameters to connect to DB
at
> > the
> > > application startup. In the S2 documentation I read about the "key
> > > initialization parameters" (
> > http://struts.apache.org/2.x/docs/webxml.html)
> > > and so I add the 2 lines <init-param> to my web.xml like this :
> > > <filter>
> > >         <filter-name>action2</filter-name>
> > >         <filter-class>org.apache.struts2.dispatcher.FilterDispatcher
> > > </filter-class>
> > >         <init-param>
> > >                 <param-name>config</param-name>
> > >                 <param-value>appConfig.xml</param-value>
> > >         </init-param>
> > >         <init-param>
> > >                 <param-name>configProviders</param-name>
> > >                 <param-value>
> > > app.core.configuration.ApplicationConfigurationProvider
</param-value>
> > >         </init-param>
> > > </filter>
> > >
> > > The appConfig.xml is the file where I have my configuration, it is
> > supposed
> > > to be at the root (/WEB-INF/), and the
> > > app.core.configuration.ApplicationConfigurationProvider is the class
> > > implementing ConfigurationProvider interface as said in the doc.
> > > In the init() method of the Provider, I just add "System.out.println
> > ("--Init
> > > plugin begin--");" but it never appears in the log, and I cannot see
> > > anything neither about the xml file nor the Provider.
> > >
> > > Maybe, I'm totally wrong and there is a better way to load the file
> > where I
> > > configure my DB connection?
> > >
> > > I'm a little confused, so any help would be appreciated.
> > >
> > > Thanks in advance.
> > >
> > > Sebastien
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > 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