On Tue, 19 Mar 2002, Soefara Redzuan wrote:

> Date: Tue, 19 Mar 2002 09:11:00 +0800
> From: Soefara Redzuan <[EMAIL PROTECTED]>
> Reply-To: Tomcat Users List <[EMAIL PROTECTED]>
> To: [EMAIL PROTECTED]
> Subject: Is there db caching ? Re: Managing Tomcat(4.0.x) JNDI JDBC pool
>     resources
>
> Super explanation, Craig. I've taken a look at the Tyrex site and think I'm
> correct in saying that there is no caching of database results. Is this true
> ?
>

I don't know about Tyrex in particular, but data caching is not a feature
that you want in a connection pool -- it should be done either in the
database itself (by copying frequently accessed data into memory) or in
the application (by loading that data into the application's memory so
that you don't have to go back to the database as often).

Many databases do a lot of caching for you at the back end, and allow the
DBA to configure what kind of data gets buffered.  For some apps, that
will be all you need.  For others (especially where the database is on a
different machine so that every query is a network transaction) you'll
probably want more aggressive caching inside your app.

> I understand that database connections take longer than queries so the
> connection pooling creates the greatest time saving, but I think result
> caching can also improve performance. Does Tomcat have a mechanism for doing
> this or is it up to us to build that into our own web-apps ? Is there a
> boilerplate for doing this ?
>

IMHO, caching of application data should be the responsibility of the
application -- only the application has enough knowledge about what data
it is going to need repetitively, when that cached data might go stale,
and when to remove it from the cache when it's no longer needed.

I'd go back to standard texts and courseware on optimizing database-based
applications -- these principles apply equally well to a webapp based on
servlets and JSPs as they do in batch and client-server apps (although the
implementation can get a little tricker because of multithreading
considerations).

> Thank you, Soefara
>

Craig


> >From: "Craig R. McClanahan" <[EMAIL PROTECTED]>
> >Reply-To: "Tomcat Users List" <[EMAIL PROTECTED]>
> >To: Tomcat Users List <[EMAIL PROTECTED]>
> >Subject: Re: Managing Tomcat(4.0.x) JNDI JDBC pool resources - Craig?
> >Date: Sat, 16 Mar 2002 12:51:22 -0800 (PST)
> >
> >
> >
> >On Sat, 16 Mar 2002, Steven Elliott wrote:
> >
> > > Date: Sat, 16 Mar 2002 17:46:01 +0000
> > > From: Steven Elliott <[EMAIL PROTECTED]>
> > > Reply-To: Tomcat Users List <[EMAIL PROTECTED]>
> > > To: [EMAIL PROTECTED]
> > > Subject: Managing Tomcat(4.0.x) JNDI JDBC pool resources - Craig?
> > >
> > > Apologies in advance if this has already been answered in another thread
> >but
> > > my searches have turned up numerous references to JNDI & pooling & JDBC
> >-
> > > etc. but only one post mentioned managing container (Tomcat) pool
> >resources
> > > and that question went unanswered as far as I could tell.  Nor did I
> >find
> > > anything particullarly illuminating in the Tomcat documentation.  At
> >least I
> > > haven't found the
> > >
> > > After reading the JDBC2.0 stdext documentation it seems that the
> >container
> > > does not use the driver's ConnectionPoolDataSource interface as a
> >factory
> > > for PooledConnection objects but instead (at least what I can tell from
> > > Tomcat) uses its own pooling resource?
> > >
> >
> >The container exposes a javax.sql.DataSource implementation to
> >applications.  Internally, the factory is currently based on Tyrex
> >(http://tyrex.exolab.org) for 4.0.x, but has switched to the DBCP package
> >from Jakarta Commons (http://jakarta.apache.org/commons) in the nightly
> >builds.
> >
> > > What I don't see provided for is any kind of management methods to set
> >Min
> > > or Max Pool size, or setting the initial Pool size, etc.  Nor do I see
> >any
> > > default values?  Although I can set parameters for the DataSource object
> > > supported by my driver (like dataBaseName, etc. I think) I don't see any
> >way
> > > to get to the setter, getter methods supported by my driver's
> > > ConnectionPoolDataSource factory (beyond the methods declared in the
> >javax
> > > API)?
> > >
> >
> >Tyrex, and the DBCP pool, both do their own pool management of
> >java.sql.Connection instances provided by your driver, so they can be used
> >with any JDBC driver -- even those that do not support
> >ConnectionPoolDataSource themselves.  The DBCP based pool does have
> >configuration management properties for pool size and so on.
> >
> > > Is there any way to configure these parameters for Tomcat?  If not is
> >there
> > > any way to register a third party connection pool from within server.xml
> >or
> > > will this have to be done in a separate package.
> > >
> >
> >It should be possible to use the DBCP based pool even with Tomcat 4.0.x by
> >overriding the default JNDI factory for javax.sql.DataSource objects (I
> >haven't tested this, but in theory it should all work).
> >This requires the following steps:
> >
> >* Download recent nightly builds of the Collections, Pool, and DBCP
> >   packages from Jakarta Commons
> >   (http://jakarta.apache.org/builds/jakarta-commons/nightly/) and put
> >   the JAR files into $CATALINA_HOME/common/lib along with your JDBC
> >   driver.
> >
> >* Configure the "factory" parameter in the <ResourceParams> element
> >   to set the JNDI ObjectFactory class for this resource:
> >
> >     <ResourceParams name="jdbc/EmployeeDB">
> >       <parameter>
> >         <name>factory</name>
> >         <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
> >       </parameter>
> >       ... other configuration parameters ...
> >     </ResourceParams>
> >
> >* Configure the other parameter values of the <ResourceParams> element
> >   from the list of supported properties below:
> >   - driverClassName - Fully qualified Java class name of the JDBC driver
> >   - maxActive       - Maximum number of active connections at one time
> >   - maxIdle         - Maximum number of idle connections at one time
> >                       (if more are returned to the pool, they will be
> >                       closed to release database resources)
> >   - maxWait         - Number of milliseconds the pool will wait when there
> >                       are no available connections before causing
> >                       getConnection() to throw an exception
> >   - password        - Database password
> >   - url             - Connection URL (also accepts "driverName" for
> >                       backwards compatibility)
> >   - user            - Database username
> >   - validationQuery - Optional SQL SELECT statement used to validate a
> >                       connection before returning it to the application
> >                       (must return at least one row).  This is helpful
> >                       in catching stale connections because of timeouts
> >                       or recycling of the database without stopping
> >                       Tomcat.
> >
> >Alternatively, you can use any other connection pool you like, if you
> >create your own javax.naming.spi.ObjectFactory implementation class (the
> >JNDI object factory interface) and registering its name with the "factory"
> >parameter.  Documentation is in the JNDI Specification and the
> >corresponding Service Provider Interface document, at:
> >
> >   http://java.sun.com/products/jndi/docs.html
> >
> >You can use the BasicDataSourceFactory class from the Commons DBCP package
> >as a model.
> >
> > > Thanks for any ideas/help.
> > >
> > > Steven
> > >
> >
> >Craig
> >
> >
> >--
> >To unsubscribe:   <mailto:[EMAIL PROTECTED]>
> >For additional commands: <mailto:[EMAIL PROTECTED]>
> >Troubles with the list: <mailto:[EMAIL PROTECTED]>
> >
>
>
> _________________________________________________________________
> Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp.
>
>
> --
> To unsubscribe:   <mailto:[EMAIL PROTECTED]>
> For additional commands: <mailto:[EMAIL PROTECTED]>
> Troubles with the list: <mailto:[EMAIL PROTECTED]>
>
>


--
To unsubscribe:   <mailto:[EMAIL PROTECTED]>
For additional commands: <mailto:[EMAIL PROTECTED]>
Troubles with the list: <mailto:[EMAIL PROTECTED]>

Reply via email to