Connection Timeouts
ericcire Feb 21, 2002 11:05 AMHi,
I have a simple stateless session bean that does a bunch of database queries.
Every time there has been no activity for a while, all connections timeout - when I try to get a connection, the JDBC driver throws an exception. The tech support at Caribou Lake (the JDBC driver makers) says these are caused by timed-out connections.
I have tried to match the IdleTimeout to the timeout for the Caribou Lake Jsvr JDBC drivers, tried to set JBoss's timeouts for half the time, to no avail.
I have also tried to set the pooling level to 0 - hoping to force a brand new connection each time.
As long as a client has been active for a while, there's no problem.
I've worked with a few other J2EE servers, and except for this problem, I've had a very easy time using JBoss.
Any help would be greatly appreciated!
This is my setup:
SunOS 5.8 Generic_108528-10 sun4u sparc SUNW,Ultra-4
JBoss-2.4.3_Tomcat-3.2.3
Database: CA Ingres
JDBC: Caribou Lake Jsvr(http://www.cariboulake.com)
jboss.jcml:
org.hsqldb.jdbcDriver,com.cariboulake.jsql.JSQLDriver
patsrepo
org.jboss.pool.jdbc.xa.wrapper.XADataSourceImpl
jdbc:caribou:jsqlingres://myHost:6024/patsrepo_db
1200000
user
0
password
false
false
false
true
120000
1800
true
true
1.0
0
The Code:
PreparedStatement prepStmt = null;
ResultSet rs = null;
Connection conn = null;
Vector rows = new Vector();
String query = QUERY_CUSTOMER_INFO;
Customer customerData = new Customer();
customerData.customerNumber = new Integer(customerID);
try {
conn = makeConnection();
prepStmt = conn.prepareStatement(query);
prepStmt.setInt(1,customerID);
rs = prepStmt.executeQuery();
while(rs.next()) {
customerData.customerName = rs.getString(1);
}
}
catch (SQLException e) {
e.printStackTrace();
}
catch (ClassCastException e) {
e.printStackTrace();
}
catch (NamingException e) {
e.printStackTrace();
}
finally {
if (rs != null) {
try {
rs.close();
}
catch (SQLException qx) {
}
}
if (prepStmt != null) {
try {
prepStmt.close();
}
catch (SQLException qx) {
}
}
if (conn != null) {
try {
conn.close();
}
catch (SQLException qx) {
qx.printStackTrace();
}
}
}
Vector v = new Vector();
v.add(customerData);
return v;