Quoting e-denton Java Programmer <[EMAIL PROTECTED]>:

> Merry Christmas,
> 
> Wow, I finally connected to my data source! Now, I want to put the code
> somewhere it will be executed only once, and save the DataSource object
> where Actions, beans, etc. can get at it. That way, I don't have to perform
> the lookup all the time.
> 

That turns out not to be the recommended pattern, for at least two reasons:

* If your app server supports the ability to dynamically
  reconfigure DataSource objects while your app is running,
  the object retrieved via JNDI might change each time.

* If you retrieve it once and then put it someplace (such as
  in a servlet context attribute) then any code that wants to
  retrieve it will need a reference to the ServletContext object
  (and therefore be dependent on the servlet API).



> Any suggestions on where to put the one time setup code, and where to save
> the DataSource object reference (in the application?).
> 

Consider setting up a utility class with a public static method called
getDataSource() that actually does the lookup every time.  Then you can call it
like:

  DataSource ds = MyUtils.getDataSource("jdbc/TestDB");

or, even go a step farther and have it return a connection for you ... that way
you're hiding how the connection pooling is being done as well, and just
operating at the SQL level.

> Thanks again,
> 
> Will
> 

Craig


> ----- Original Message ----- 
> From: "Vic Cekvenich" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Saturday, December 20, 2003 12:14 PM
> Subject: Re: How find DataSource?
> 
> 
> > See sample source code section here:
> >
>
http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jndi-datasource-examples-howto.html
> >
> > Ex:
> > Context ctx = new InitialContext();
> >        if(ctx == null )
> >            throw new Exception("Boom - No Context");
> >
> >        DataSource ds =
> >              (DataSource)ctx.lookup(
> >                 "java:comp/env/jdbc/TestDB");
> >
> >
> > Of course what you do with the data source depends on your DAO
> > implementataion (iBatis, Hibrenate, etc.)
> >
> > .V
> >
> >
> > hylepc wrote:
> > > Hi,
> > >
> > > From a Data Acess Object (DAO), I need to access a DataSource (like
> > > getServletContext().getAttribute (Globals.DATA_SOURCE_KEY)). But, I
> don't
> > > have access to the servlet variable.
> > >
> > > What is the proper way to get the DataSource from a DAO which is called
> by
> > > an Action but doesn't extend Action?
> > >
> > > Thanks,
> > >
> > > Will
> >
> >
> > ---------------------------------------------------------------------
> > 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]
> 




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

Reply via email to