As mentioned elsewhere today, I've been using this ConnectionAdaptor:

http://cvs.apache.org/viewcvs.cgi/jakarta-commons-sandbox/scaffold/src/java/org/apache/commons/scaffold/sql/

But I'd wouldn't mind refactoring it into more of a DataSource manager, 
with the functionality seen in Struts 1.1. The idea being you could 
register several different DataSources, and then have the business layer 
say I want this one, or just give me the default (null) one.

-Ted

Craig R. McClanahan wrote:

> 
> On Fri, 6 Sep 2002, Craig Tataryn wrote:
> 
> 
>>Date: Fri, 06 Sep 2002 15:16:13 -0500
>>From: Craig Tataryn <[EMAIL PROTECTED]>
>>Reply-To: Struts Users Mailing List <[EMAIL PROTECTED]>
>>To: [EMAIL PROTECTED]
>>Subject: Re: Alternative Datsource Hot-potatoing...
>>
>>Thanks Craig.  I'll take a look into option 3.
>>
>>Could you see a problem with me creating a class called "DataAdaptor" with a
>>static method called "getConnection()" which is initialized apon application
>>startup with the DataSource setup by Struts?  Then using this static method
>>in my data objects to grab a connection?
>>
>>
> 
> Isn't that basically option 2?
> 
> The only disadvantage is that, unless you're careful, your DataAdaptor
> class will be dependent on Struts unless you make it have a static
> setDataSource() method or something.  But you're still tying your business
> logic classes to the presence of DataAdaptor in every program that uses
> this approach (which may or may not be a big deal).
> 
> 
>>Craig.
>>
> 
> Craig
> 
> 
>>>From: "Craig R. McClanahan" <[EMAIL PROTECTED]>
>>>Reply-To: "Struts Users Mailing List" <[EMAIL PROTECTED]>
>>>To: Struts Users Mailing List <[EMAIL PROTECTED]>
>>>Subject: Re: Alternative Datsource Hot-potatoing...
>>>Date: Fri, 6 Sep 2002 11:40:48 -0700 (PDT)
>>>
>>>
>>>
>>>On Fri, 6 Sep 2002, Craig Tataryn wrote:
>>>
>>>
>>>>Date: Fri, 06 Sep 2002 12:41:26 -0500
>>>>From: Craig Tataryn <[EMAIL PROTECTED]>
>>>>Reply-To: Struts Users Mailing List <[EMAIL PROTECTED]>
>>>>To: [EMAIL PROTECTED]
>>>>Subject: Alternative Datsource Hot-potatoing...
>>>>
>>>>I was wondering if someone could give me a heads up on some alternative
>>>>means for which to give my data access layer access to my datasource.
>>>>
>>>>I don't really like the idea of my controller grabbing the Datasource,
>>>>passing it off to my business layer, who in turn passes it along to my
>>>>
>>>data
>>>
>>>>layer.  I guess I'm sort of a purest, but I don't think the Business
>>>>
>>>layer
>>>
>>>>should know anything about the database, and that means it shouldn't
>>>>
>>>even
>>>
>>>>have methods that take connections or datasourses as parameters.
>>>>
>>>>I think the only thing I like about the Controller passing along a
>>>>connection to my business/data layer is the fact that I can first open a
>>>>transaction before passing the connection along, and then I can commit
>>>>
>>>the
>>>
>>>>transaction when everything is done.  Thus my transactions are at the
>>>>controller level, and can be managed there.
>>>>
>>>>Back in my old VB/COM days, we had a sort of DB Utilities class which
>>>>
>>>could
>>>
>>>>be accessed from the datalayer.  You would ask it to give you a
>>>>
>>>connection,
>>>
>>>>and it would get it for you.  Should I make my own class for datasource
>>>>access which is intitalized upon application start with the Datasource
>>>>object found by struts?  Then the rest of my datalayer can simply use
>>>>
>>>it?
>>>
>>>Three basic options exist:
>>>
>>>* Hand a DataSource (I normally prefer to send a Connection instead, but
>>>  either works) to your business logic method as a parameter to each call
>>>  that needs it.  Advantage:  no binding to anything.  Disadvantage:  can
>>>  be a pain to hand it around.
>>>
>>>* Static methods ... Most DB connection pool implementations offer a way
>>>  to retrieve a DataSource or Connection via a static method.  Advantage:
>>>  no handing around extra method parameters.  Disadvantage:  ties you to
>>>  that connection pool's APIs.
>>>
>>>* JNDI resources -- All J2EE app servers (and some servlet containers like
>>>  Tomcat 4) offer support for JNDI resources that are accessible to your
>>>  business logic directly like this:
>>>
>>>    import javax.naming.Context;
>>>    import javax.naming.InitialContext;
>>>
>>>    InitialContext ic = new InitialContext();
>>>    Context ctx = (Context) ic.lookup("java:comp/env");
>>>    DataSource ds = (DataSource) ctx.lookup("jdbc/EmployeeDb");
>>>
>>>  where "jdbc/EmployeeDb" is a resource reference you have declared in
>>>  your web.xml file.  Advantage:  No parameter passing, no connection
>>>  pool API lock-in.  Advantage:  configuration of the data source is
>>>  external to your webapp (it's done with the server configuration
>>>  capabilities).  Disadvantage:  container must support this.
>>>
>>>For info on how to use the third option in Tomcat, see:
>>>
>>>
>>>http://jakarata.apache.org/tomcat/tomcat-4.1-doc/jndi-resources-howto.html
>>>
>>>(NOTE -- if you're going to use Tomcat, definitely go for 4.1; 4.0's
>>>support has problems for many users).
>>>
>>>
>>>>Thanks,
>>>>
>>>>Craig.
>>>>
>>>>Craig W. Tataryn
>>>>Programmer/Analyst
>>>>Compuware
>>>>
>>>Craig
>>>
>>>
>>>--
>>>To unsubscribe, e-mail:
>>><mailto:[EMAIL PROTECTED]>
>>>For additional commands, e-mail:
>>><mailto:[EMAIL PROTECTED]>
>>>
>>
>>Craig W. Tataryn
>>Programmer/Analyst
>>Compuware
>>
>>_________________________________________________________________
>>Send and receive Hotmail on your mobile device: http://mobile.msn.com
>>
>>
>>--
>>To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
>>For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>>
>>
> 
> 
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
> 
> 


-- 
Ted Husted, Husted dot Com, Fairport NY US
co-author, Java Web Development with Struts
Order it today:
<http://husted.com/struts/book.html>


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

Reply via email to