Thanks Ted, I'll check it out. But just out of curiosity, why would you ever want your Business Layer to know about Datasources?
Craig. >From: Ted Husted <[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, 06 Sep 2002 17:27:12 -0400 > >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]> 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]>

