RE: Error in servlet - Mailing list pgsql-general

From Andreas Tille
Subject RE: Error in servlet
Date
Msg-id Pine.LNX.4.21.0009181550390.1778-100000@wr-linux02.rki.de
Whole thread Raw
In response to RE: Error in servlet  (Tim Kientzle <kientzle@acm.org>)
List pgsql-general
On Fri, 15 Sep 2000, Tim Kientzle wrote:

> The Statement variable here CANNOT be a class
> variable unless you're taking other steps to
> synchronize access.  Otherwise, you risk having
> two different threads trying to manipulate the
> same statement object at the same time.
OK, I followed your hint and made statement and resultset local
in all methods.

> The Connection object is what holds the connection
> to the database.  Whether or not that can safely
> be class scope depends on your particular JDBC driver
> and how you're using it.  This might work.
Hmm, I'm using the driver shipped with Debian which is from
ftp://ftp.postgresql.org/pub/postgresql.6.4.2.tar.gz

What about this?  Would it work.  Would anybody recommend the
driver from   http://www.retep.org.uk/postgres/ ?

> If you're not using auto-commit, this won't work,
> since each connection is a single transaction
> environment, and you'll have multiple transactions
> interfering with one another.
Could you explain this a little bit more detailed for a beginner
or is there any information source about this topic?

> Another ugly problem you'll encounter:  many database
> servers don't like long-lived connections, and will
> spontaneously drop them after a few hours.  At the very
> least, you should timestamp when you opened the connection
> (long timestamp = System.currentTimeMillis();)
> and close/reopen it every 30 minutes or so.  Also,
> you'll want to be sure to ping the connection regularly
> in case something goes down (like a bad network cable).
You speak about "many database servers".  What about PostgreSQL?

> If you have a relatively low-traffic site, opening
> one new connection for each request is not a real
> problem.  I've measured connection opens at around 0.1-0.2
> seconds on local MySQL and networked Oracle, which isn't at
> all prohibitive for a lot of applications.  Plus, that
> approach is easy to understand and very reliable.
I think in my case it would be best to hold the connection open
while performing the about 10 requests of the servlet which are
necessary to build my web-pages.

> If you have a higher-traffic site, look into connection
> pooling.  A good connection pool will cycle the connections,
> open more if you need them, and can deal with a lot of other
> issues as well.
Speaking about connection pooling I considered another problem:
I'm using JServ and it seems to try to open more than one connection
to the PostgreSQL server.  Formerly I used MS SQL server and there
where 5 open connections per servlet.
How do I check the open connections of a servlet to the PostgreSQL
server?  How do I enforce connection pooling?

Kind regards

            Andreas.


pgsql-general by date:

Previous
From: Marko Kreen
Date:
Subject: binary operators on integers
Next
From: "Muggleton, Keith"
Date:
Subject: Geometric Operations