I'm using jdbcrealm to connect mySQL DB.
The following is from my server.xml.
It works well except autoReconnect part.
Every morning when I try to connect I get "Invalid username/password" error
message once.
and when I try again it connects.
Have any one had this problem?
Thanks.
*************************************************
<ResourceParams name="jdbc/mydb">
<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>30000</value>
</parameter>
<!-- MySQL dB username and password for dB connections -->
<parameter>
<name>username</name>
<value>myname</value>
</parameter>
<parameter>
<name>password</name>
<value>mypw</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
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://myserver.comom/mydb?autoReconnect=true</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
</ResourceParams>
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
driverName="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://myserver.com/mydb?user=myname&password=mypw"
userTable="users"
userNameCol="user_login"
userCredCol="user_password"
userRoleTable="user_role"
roleNameCol="user_role"/>
<!--

Signature
****************** End of Message ******************
--
****************** End of Message ******************
> I'm using jdbcrealm to connect mySQL DB.
> The following is from my server.xml.
[quoted text clipped - 4 lines]
> Have any one had this problem?
> Thanks.
MySQL's autoreconnect feature will always cause this, because the
current query can't just automatically be 'replayed', because it's not
safe to do so (you risk data corruption, even if using transactions,
because the application, in this case Tomcat, will think the entire
transaction was okay, when it wasn't).
The issue is basically that Tomcat's JDBCRealm is not very robust in the
face of connection failure (timeouts, database server being restarted,
network cable unplugged, et-al). If you're using a Tomcat-5.0, you'd be
better off using a DataSourceRealm anyway:
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/realm-howto.html#DataSourceRealm
Regards,
-Mark

Signature
Mr. Mark Matthews
MySQL AB, Software Development Manager, J2EE and Windows Platforms
Office: +1 708 332 0507
www.mysql.com
MySQL Guide to Lower TCO
http://www.mysql.com/it-resources/white-papers/tco.php
PC - 13 Jul 2004 18:55 GMT
Thanks, Mark.
> > I'm using jdbcrealm to connect mySQL DB.
> > The following is from my server.xml.
[quoted text clipped - 15 lines]
> network cable unplugged, et-al). If you're using a Tomcat-5.0, you'd be
> better off using a DataSourceRealm anyway:
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/realm-howto.html#DataSourceRealm
> Regards,
>
> -Mark