Thanks Mark. This should probably be archived somewhere outside of the mailing list. Do you have any plans to put it on a web page somewhere?
-= J > -----Original Message----- > From: Mark Lowe [mailto:[EMAIL PROTECTED] > Sent: Thursday, July 10, 2003 6:53 AM > To: Struts List > Cc: Garry Dillon; Jeremy Pocock; Simon Brown; Simon Fox; > [EMAIL PROTECTED] > Subject: [OT] Setting up torque with struts > > > This is how to configure torque to work with struts. a few weeks or > ,perhaps, months ago, Ville > (vilho[at]students[dot]cc[dot]tut[dot]fi) > after he'd spent a week bringing together all the required > resources, > he kindly mailed me some instructions on how to do so. I tested his > instructions and got stuff running. I was waiting for him to post > something on this but I guess he hasn't had time etc, so i > thought I'd > do it with any additional knowledge I've gained through going > through > the motions. > > You can read about torque here: > http://db.apache.org/torque > > ...and struts here... > http://jakarta.apache.org/struts > > Assumptions > I'll also assume that you're familiar with webapp > development, and your > development follows this organization: > > http://jakarta.apache.org/tomcat/tomcat-4.1-doc/appdev/index.html > > ..and that you've got a compliant container running etc. > > In anticipation of any questions, I don't know how to > configure IDE's > if you know your IDE then you should know how to set it up. I'd > recommend a terminal, ant an a trusty text editor. > > 1. Download a stable release of torque [3.02 seems to be the > puppy at > this time]. > > 2. Untar torque and put it somewhere where you like to work. (e.g. > ~/Projects).. > > 3. Copy Torque's jar files to /web/WEB-INF/lib > This way all the relevant jars are in the right place, its a > bit messy > as there are several versions of some classes, I anticipated having > problems here but none thus far. > > 4. Edit/Add these properties to build-torque.xml and > [myproject]-schema.xml (see docs) > > <property name="torque.output.dir" value="../src"/> > <property name="torque.doc.dir" value="../doc"/> > <property name="lib.dir" value="../web/WEB-INF/lib"/> > > The paths will depend on where you prefer to organize your projects. > > You can add these in build.properties.. I prefer doing it in > XML, but > I'm sure there are good reasons for using the properties file instead. > > e.g. in [myproject]-schema.xml > > <database name="sparrow" package=com.sparrow.torque"> > > rather than defining package in a properties file, i think its more > maintainable as a attribute of database. > > Also.. > make sure that your jdbc jar is specified in your > "torque-classpath" > file set list and avoid wild carding. Both struts and torque > make use > of some of the commons sub projects, torque has a greater > dependency on > some old versions of commons-collections and such like. To > get running > I just use both together and i've had no problems as yet, I'd > like to > get the time and look through the torque source and perhaps make it > less dependent on deprecated code. > > 5. Then run. > > > ant -f build-torque.xml > > Hopefully the OM classes have been generated to your source > directory, > and thus can be compiled with you servlets etc. > > e.g. > > /src/java/com/sparrow/struts > /src/java/com/sparrow/torque > /src/sql > > the following tasks fire up the sql scripts and do the DB stuff. > > ant -f build-torque.xml create-db > > ant -f build-torque.xml id-table-init-sql > > ant -f build-torque.xml insert-sql > > 6. Now create a servlet that fires up you torque generated OM. Also > copy the Torque.properties file here. I have a different > package name > than my OM so I can remove all the generated stuff without > destroying > my servlet and properties file. This servlet isn't anything > new there > are loads of resources on the torque site referencing this, I just > changed the name from InitTorque because 'start' seems a > perfectly good > word for folks to read. > > package com.sparrow.servlets; > > import java.io.InputStream; > import java.io.IOException; > import javax.servlet.http.HttpServlet; > import javax.servlet.http.*; > import javax.servlet.*; > > import org.apache.torque.Torque; > import org.apache.torque.TorqueException; > import org.apache.commons.configuration.PropertiesConfiguration; > > > public class StartTorque extends HttpServlet { > public void init(ServletConfig config) throws ServletException { > super.init(config); > try { > > InputStream configStream = > getServletContext().getResourceAsStream(config.getInitParamete > r("config" > )); > > PropertiesConfiguration c = new PropertiesConfiguration(); > c.load( configStream ); > Torque.init( c ); > > } > catch (IOException e) { > throw new ServletException( e.toString() ); > } > catch ( TorqueException e ) { > throw new ServletException( e.toString() ); > } > } > } > > Edit the Torque.properties file to suit your needs. This will > read the > values in Torque.properties file (covered in Torque docs). > > e.g. > ##i love sparrows!!!!!! > torque.database.default=sparrow > torque.database.sparrow.adapter=mysql > > ## Using Jdbc2Pool > torque.dsfactory.nsalliance.factory = > org.apache.torque.dsfactory.Jdbc2PoolDataSourceFactory > torque.dsfactory. sparrow.pool.defaultMaxActive = 10 > torque.dsfactory. sparrow.pool.testOnBorrow = true > > ##change to select * from dual for Oracle etc > torque.dsfactory. sparrow.pool.validationQuery = SELECT 1 > torque.dsfactory. sparrow.connection.driver = com.mysql.jdbc.Driver > torque.dsfactory. sparrow.connection.url = > jdbc:mysql://localhost:3306/sparrow > torque.dsfactory. sparrow.connection.user = dbuser > torque.dsfactory. sparrow.connection.password = sparrow > > In web.xml > > <servlet> > <servlet-name>StartTorque</servlet-name> > <servlet-class>com.sparrow.servlets.StartTorque</servlet-class> > <init-param> > <param-name>config</param-name> > > <param-value>/WEB-INF/classes/com/sparrow/servlets/Torque.prop > erties</ > param-value> > </init-param> > <load-on-startup>3</load-on-startup> > </servlet> > > 7. Finally you should be able to build your whole project using your > build file that you use for your webapp. You'll just have to import > your OM classes into your actions and the torque docs should > give you a > clear run from here. > > e.g. > import com.sparrow.torque.*; > import org.apache.torque.util.Criteria; > > Again torque docs cover using criteria etc. > > Notes. > If you're building an application from scratch you'll be able to > generate your OM from your xml schema. If you're using an > existing DB > then you can generate your schema and then generate your OM. > If you've > had DBA types geeking around with outer joins there can be issues. > Torque doesn't really support outer joins. > > I'm non beard-sporting, partial to quiche and I pride myself > on my low > IQ, so please don't post me anything too clever cos i'll get > confused > start dribbling and talking about sparrows :) > > > --------------------------------------------------------------------- > 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]