1 message in com.mysql.lists.javaJDBC tomcat realm error
FromSent OnAttachments
Vestergaard Dann21 Mar 2005 04:27 
Subject:JDBC tomcat realm error
From:Vestergaard Dann (Da@danfoss.com)
Date:03/21/2005 04:27:11 AM
List:com.mysql.lists.java

Hi,

I have an JSP application running in a Red Hat 9, Tomcat 5.0.28, JDBC 3.1 and MySQL 4.1.7. Most of the components has recently been upgraded to newer versions, and suddenly problems occur...

The entry in the tomcat error log is the following:

2005-03-18 08:36:55 JDBCRealm[/chemicalinventory]: Exception performing authentication java.sql.SQLException: Communications link failure during commit(). Transaction resolution unknown. at com.mysql.jdbc.Connection.commit(Connection.java:1099) at org.apache.catalina.realm.JDBCRealm.authenticate(JDBCRealm.java:460) at org.apache.catalina.realm.JDBCRealm.authenticate(JDBCRealm.java:347) at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAut henticator.java:229) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authenticator Base.java:446) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5 20) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java :137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :118) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5 20) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5 20) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:79 9) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC onnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:57 7) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool .java:683) at java.lang.Thread.run(Thread.java:595)

This causes the application to become inaccesible, and shutting down tomcat, results in the java-thread to hang... after killing the process, restarting the tomcat is ok, but soon the same crash again...

The context attr. in the server.xml is as follows

<Context path="/chemicalinventory" docBase="chemicalinventory" debug="5" reloadable="true" crossContext="true">

<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_DBTest_log." suffix=".txt" timestamp="true"/>

<Resource name="jdbc/chemicalinventory" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/chemicalinventory">

<parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter>

<!-- Maximum number of dB connections in pool. Make sure you configure your mysqld max_connections large enough to handle all of your db connections. Set to 0 for no limit. -->

<parameter> <name>maxActive</name> <value>100</value> </parameter>

<!-- Maximum number of idle dB connections to retain in pool. Set to 0 for no limit. -->

<parameter> <name>maxIdle</name> <value>30</value> </parameter>

<!-- Maximum time to wait for a dB connection to become available in ms, in this example 10 seconds. An Exception is thrown if this timeout is exceeded. Set to -1 to wait indefinitely. -->

<parameter> <name>maxWait</name> <value>10000</value> </parameter>

<!-- MySQL dB username and password for dB connections -->

<parameter> <name>username</name> <value>chemicals</value> </parameter>

<parameter> <name>password</name> <value>XXXXX</value> </parameter>

<!-- Class name for mm.mysql JDBC driver --> <parameter> <name>driverClassName</name> <value>com.mysql.jdbc.Driver</value> </parameter>

<!-- The JDBC connection url for connecting to your MySQL dB. The autoReconnect=true argument to the url makes sure that the mm.mysql JDBC Driver will automatically reconnect if mysqld closed the connection. mysqld by default closes idle connections after 8 hours. -->

<parameter> <name>url</name> <value>jdbc:mysql://localhost/chemicals?autoReconnect=true</value> </parameter>

<!-- Remove abandonded connections --> <parameter> <name>removeAbandoned</name> <value>true</value> </parameter>

<parameter> <name>removeAbandonedTimeout</name> <value>30</value> </parameter>

<parameter> <name>logAbandoned</name> <value>true</value> </parameter>

</ResourceParams>

<Realm className="org.apache.catalina.realm.JDBCRealm" debug="0" driverName="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/chemicals" connectionName="chemicals" connectionPassword="XXXXXX" userTable="user" userNameCol="user_name" userCredCol="password" userRoleTable="roles" roleNameCol="role" digest="MD5"/> </Context>

Pleeezzzee help...

The application has been runnig without problems for a long time period (appr. 1 year) and suddenly the problems occur...

Dann