Hi Harry,
>I'm going to try and hijack this thread if I may (!) because, as you say...
>
>
Welcome! ;-)
>[...] The other Tomcat server runs on a Red Hat 9 machine at my home. It connects
>to the above Oracle DB box - far away - using the same static IP address.
>
>[...] The problem is with the the DB connections on my own RH9 server - they just
>*die* after a period of inactivity :-(
>
>That period of inactivity can be as little as half and hour.
>[...]
>
>
Very typical behaviour... at least in our scenario.
>BTW - the 'first' login attempt (which reactivates the connection pooling)
>never gets a response - it just times out.
>
>
Very true.
>Do you think you can shed any light on this?
>
I'll try.
>I have read just about every
>single forum discussion - from Tomcat-User to Commons DBCP to you-name-it,
>and I just cannot find the answer.
>
>
>I have a very strict firewall policy on my Linux box - using iptables. Only
>port 80 packets get through. Nothing else.
>
>Does that have something to do with my problem? Is there an ICMP port that I
>need to open up?
>
>
Nope. No ICMP is needed for keepalives.
The reason of your headaches may be in /proc/sys/net/ipv4/netfilter
There, you have several timeout values. Check
ip_conntrack_tcp_timeout_established.
Anyway, however high you set the values in there, there will be an upper
limit. So, I think you need to avoid your connection being idle, so that
your firewall does not drop it, even with low timeout values. To do
that, I suggest to use the mechanism provided by DBCP to test idle
connections every now and then.
testWhileIdle --> true
validationQuery --> select 'x' from dual
timeBetweenEvictionRunsMillis --> 300000 (five minutes. Or longer, as
far as it works...)
On Monday, I may send you out production values. Now I don't have them,
so I worked out some ;-)
I am not sure whether you will need to set some more parameters. The
authoritative source of information is:
http://jakarta.apache.org/commons/dbcp/configuration.html
Other sources (link below) say that you also have to set
numTestsPerEvictionRun. I'd suggest a value equal to maxIdle.
http://www.mail-archive.com/commons-user@(protected)
And he also proposes another solution (which I have not tested):
---------------------------------------------------
You can prevent that your firewall from dropping the connection using
a oracle technique.
SQL*Net has a parameter which defines time interval to send a probe
message to identify if the client process is still alive
- SQLNET.EXPIRE_TIME, sqlnet.ora file on the server side.
SQLNET.EXPIRE_TIME = <your_value>
Set it to something like 30 when your firewall drops connection after
60 minutes.
---------------------------------------------------
I hope that helped.
Antonio Fiol

Attachment:
smime.p7s