Hi Carell,

why do you use generic engine? Wouldn't it be better to use mysql engine as per:

<database name="sifs" engine="mysql" >

Regards
Ralf


Werner Guttmann schrieb:
Carell,

let me try to explain a couple of things. As layed out by your code fragments 
below, Castor is configured to obtain a JDBC connection from a 
java.sql.DataSource (instantiated through a JNDI lookup). In other words, 
Castor per se cannot do anything about stale connections (and actually is 
designed to do so), as connection handling is the sole responsibility of the 
JDBC DataSource (or teh underlying JDBC connection pool in your case).

As you are using Jakara Common DBCP, have a look at
http://jakarta.apache.org/commons/dbcp/configuration.html

and you'll see various options (validationQuery, testOnBorrow, testOnReturn) 
that allow you to configure DBCP (not Castor) how to deal with stale 
connections.

Having said that, please keep in mind that a possible source for the problem 
you are seeing might be related to the way you seem to be using Castor:

db = jdo.getDatabase();
 ....
db.close();

I do hope that in reality you have proper exception handling in place, by e.g. 
wrapping above code fragment in a try/catch/finally clause, thus guaranteeing 
that the Database instance (and hence the undrlying JDBC connection) will be 
closed (and thus the JDBC connection returned to the pool).

Regards
Werner

wg> -----Original Message-----
wg> From: Carell, Michael [mailto:[EMAIL PROTECTED]
wg> Sent: Tuesday, June 21, 2005 9:11 AM
wg> To: dev@castor.codehaus.org
wg> Subject: AW: AW: [castor-dev] JDO / MySQL DB reconnect problem
wg> wg> wg> Hi, wg> wg> i will answer your questions but at first i want to come wg> back to the original
wg> problem:
wg> wg> The problem was that it is (as far as i know) not possible to wg> get a really fresh connection from castor. My application wg> detected the problem wg> with the DB connection and tried to get a new/ fresh one. wg> But JDO always returned
wg> the connection that procecced the errors.
wg> wg> Now to your questions: wg> wg> My application does not keep the connection open. wg> I use the following statement to get a DB connection and to wg> close it. wg> wg> JDO2.loadConfiguration (jdoConf);
wg> JDO2 jdo = JDO2.createInstance( "sifs2" );
wg> db = jdo.getDatabase();
wg> ....
wg> db.close();
wg> wg> thats it. wg> wg> Reproduction should be easy. wg> wg> * Get a DB connection from JDO
wg> * Create object in DB
wg> * Wait 12 hours (do not end app)
wg> * Get again a DB connection
wg> * Try to create => ERROR
wg> wg> wg> The tomcat configuration looks like:
wg> -------------------------------------
wg> <Resource name="jdbc/SIFS" auth="Container" wg> type="javax.sql.DataSource"/> wg> wg> <ResourceParams name="jdbc/SIFS">
wg>                  <parameter>
wg>                        <name>url</name>
wg> wg> <value>jdbc:mysql://172.18.25.149:3306/sifs?autoReconnect=tr
wg> ue</value>
wg>                      </parameter>
wg> wg> <parameter>
wg>                               <name>username</name>
wg>                               <value>root</value>
wg>                      </parameter>
wg>                      <parameter>
wg>                               <name>password</name>
wg>                               <value>root</value>
wg>                      </parameter>
wg> wg> <parameter>
wg>                        <name>factory</name>
wg> wg> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
wg>                      </parameter>
wg> wg> <parameter>
wg>                        <name>maxActive</name>
wg>                        <value>100</value>
wg>                      </parameter>
wg> wg> <parameter>
wg>                        <name>maxIdle</name>
wg>                        <value>10</value>
wg>                      </parameter>
wg> wg> <parameter>
wg>                        <name>maxWait</name>
wg>                        <value>20000</value>
wg>                      </parameter>
wg> wg> <parameter>
wg>                         <name>driverClassName</name>
wg>                         <value>org.gjt.mm.mysql.Driver</value>
wg>                      </parameter>
wg> wg> </ResourceParams> wg> wg> Castor config:
wg> --------------------------------------------------
wg> <database name="sifs" engine="generic" >
wg> wg> <jndi name="java:comp/env/jdbc/SIFS" /> wg> wg> <mapping href="resources/mapping.xml" />
wg> </database>
wg> wg> wg> -----Ursprüngliche Nachricht----- wg> Von: Werner Guttmann [mailto:[EMAIL PROTECTED] wg> Gesendet: Montag, 20. Juni 2005 20:24
wg> An: dev@castor.codehaus.org
wg> Betreff: Re: AW: [castor-dev] JDO / MySQL DB reconnect problem
wg> wg> wg> Hi Carell, wg> wg> Carell, Michael wrote:
wg> > Hi,
wg> > wg> > i really do not know what the MySQL Connector J does.
wg> MySQL Connector/J is a synonym for the JDBC driver for mySQL.
wg> > Fact is that
wg> > the application receives the following exception
wg> > wg> > java.io.EOFException
wg> >        at com.mysql.jdbc.MysqlIO.readFully
wg> I actually don't think that mySQL or Castor JDO is the wg> problem. Let me ask you a couple of questions: wg> wg> a) why do you need to keep a connection open for more than 8 hours ? wg> b) how have you configured your connection pool. In other wg> words, can you please show me the tomcat configuration file wg> (assuming that you configured the pool in your server.xml file). wg> > wg> > I already configured the Tomcat to use a pooled Datasource and i
wg> > gave a SQL statement to able the database check by tomcat. But
wg> > nothing really helps. If i tried to create an object it failed.
wg> > wg> > To get more information someone must debug / dig into the
wg> > Tomcat / ConnectorJ code.
wg> > wg> > Thanks for your statement
wg> > Michael Carell
wg> > wg> > -----Ursprüngliche Nachricht-----
wg> > Von: Stein M. Hugubakken [mailto:[EMAIL PROTECTED]
wg> > Gesendet: Freitag, 17. Juni 2005 12:24
wg> > An: dev@castor.codehaus.org
wg> > Betreff: Re: [castor-dev] JDO / MySQL DB reconnect problem
wg> > wg> > wg> > Carell, Michael wrote: wg> > wg> >>Hi again, wg> >> wg> >>perhaps you remember my email from some days before. I have had a
wg> >>problem with the MySQL DB and a timeout on the DB connection.
wg> >> wg> >>After some investigations i found the source of the problem. MySQL
wg> >>disconnects idle connections after some time (may be 8 hours).
wg> >> wg> > wg> > wg> > Why have a connection open for 8 hours, shouldn't it be wg> the job for a
wg> > connection-pool to give you an open connection?
wg> > wg> > Stein wg> > wg> > -------------------------------------------------
wg> > If you wish to unsubscribe from this list, please
wg> > send an empty message to the following address:
wg> > wg> > [EMAIL PROTECTED]
wg> > -------------------------------------------------
wg> > wg> > -------------------------------------------------
wg> > If you wish to unsubscribe from this list, please
wg> > send an empty message to the following address:
wg> > wg> > [EMAIL PROTECTED]
wg> > -------------------------------------------------
wg> > wg> > wg> wg> wg> ------------------------------------------------- wg> If you wish to unsubscribe from this list, please wg> send an empty message to the following address: wg> wg> [EMAIL PROTECTED]
wg> -------------------------------------------------
wg> wg> ------------------------------------------------- wg> If you wish to unsubscribe from this list, please wg> send an empty message to the following address: wg> wg> [EMAIL PROTECTED]
wg> -------------------------------------------------
wg> wg>
-------------------------------------------------
If you wish to unsubscribe from this list, please send an empty message to the following address:

[EMAIL PROTECTED]
-------------------------------------------------

--

Syscon Ingenieurbüro für
Meß- und Datentechnik GmbH
Ralf Joachim
Raiffeisenstraße 11
D-72127 Kusterdingen
Germany

Tel.   +49 7071 3690 52
Mobil: +49 173 9630135
Fax    +49 7071 3690 98

Email: [EMAIL PROTECTED]
Web:   www.syscon-world.de

-------------------------------------------------
If you wish to unsubscribe from this list, please send an empty message to the following address:

[EMAIL PROTECTED]
-------------------------------------------------

Reply via email to