I struggled with this issue for a long period, at the end I reached a
good point: I started using database connection pools [1].
Actually you should wait until the mysql connection dies (it should be
after 8 hours of db inactivity ), but you could change the
connect-timeout=seconds [2] in order to achieve the before mentioned
scenario.

[1] http://commons.apache.org/dbcp/
[2] http://dev.mysql.com/doc/refman/5.5/en/mysql-options.html


Here my context.xml is:

<Context
        override="true"
        reloadable="false"
        unpackWARs="true" autoDeploy="true"
        liveDeploy="false" allowLinking="true">
    <!--
        maxActive=10
        Don't set this any higher than max_connections on your
        MySQL server, usually this should be a 10 or a few 10's
        of connections, not hundreds or thousands
    -->
   <!--
        maxIdle=5
        You don't want to many idle connections hanging around
        if you can avoid it, only enough to soak up a spike in
        the load
    -->
    <!--
        validationQuery=select 1
        Don't use autoReconnect=true, it's going away eventually
        and it's a crutch for older connection pools that couldn't
        test connections. You need to decide whether your application
        is supposed to deal with SQLExceptions (hint, it should), and
        how much of a performance penalty you're willing to pay
        to ensure 'freshness' of the connection
    -->

    <!--
        testOnBorrow=true
        The most conservative approach is to test connections
        before they're given to your application. For most applications
        this is okay, the query used above is very small and takes
        no real server resources to process, other than the time used
        to traverse the network.

        If you have a high-load application you'll need to rely on
        something else.
    -->
    <!--
        testWhileIdle=true
        Otherwise, or in addition to testOnBorrow, you can test
        while connections are sitting idle
     -->
    <!--
        timeBetweenEvictionRunsMillis=10000
        You have to set this value, otherwise even though
        you've asked connections to be tested while idle,
        the idle evicter thread will never run
    -->
    <!--
        minEvictableIdleTimeMillis=60000
        Don't allow connections to hang out idle too long,
        never longer than what wait_timeout is set to on the
        server...A few minutes or even fraction of a minute
        is sometimes okay here, it depends on your application
        and how much spikey load it will see
    -->
    <!--
        maxWait
        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.
    -->
    <!--
        removeAbandoned=true

        A database connection pool creates and manages a pool of
connections to a database. Recycling and reusing already
        existing connections to a dB is more efficient than opening a
new connection.

        There is one problem with connection pooling. A web
application has to explicetely close ResultSet's, Statement's,
        and Connection's.
        Failure of a web application to close these resources can
result in them never being available again for reuse,
        a db connection pool "leak". This can eventually result in
your web application db connections failing if there
        are no more available connections.

        There is a solution to this problem. The Jakarta-Commons DBCP
can be configured to track and recover these
        abandoned dB connections. Not only can it recover them, but
also generate a stack trace for the code which
        opened these resources and never closed them.

    -->
    <!--
        removeAbandonedTimeout="60"
        Use the removeAbandonedTimeout attribute to set the number of
seconds a dB connection has been idle before it
        is considered abandoned.
    -->
    <!--
        logAbandoned=true
        The logAbandoned attribute can be set to true if you want DBCP
to log a stack trace of the code which abandoned
        the dB connection resources.
    -->
    <Resource
            type="javax.sql.DataSource"
            name="jdbc/${CONTEXT_NAME}"
            password="PASSWORD"
            driverClassName="org.gjt.mm.mysql.Driver"
            username="${USERNAME}"
            
url="jdbc:mysql://localhost/${DB_NAME}?zeroDateTimeBehavior=convertToNull"
            auth="Container"
            factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
            maxActive="20"
            maxIdle="5"
            validationQuery="select 1"
            testOnBorrow="true"
            testWhileIdle="true"
            timeBetweenEvictionRunsMillis="10000"
            minEvictableIdleTimeMillis="60000"
            maxWait="5000"
            removeAbandoned="true"
            removeAbandonedTimeout="60"
            logAbandoned="true"
            />
</Context>


On 1 March 2011 07:09, abhishek jain <abhishek.netj...@gmail.com> wrote:
> hi,
> this didnt solved, i created a file c3po.properties with the mentioned
> property and it didnt solved.
> also i have to wait a day for the error message, is there a way where i can
> reduce this time during test?
>
>
> thanks
> abhi
>
> On Sat, Feb 26, 2011 at 12:32 AM, Burton Rhodes <burtonrho...@gmail.com>wrote:
>
>> I recall having a similiar issue when moving to MySQL from MSSQL.  I
>> solved it by adding c3po.properties file to the classpath with the
>> text below.  It kept the connection alive with the database.
>>
>> # This property corresponds to the query run defined by the
>> "hibernate.c3p0.idle_test_period" value
>> c3p0.preferredTestQuery = SELECT 1;
>>
>> On Fri, Feb 25, 2011 at 12:53 AM, Jerson John <jer...@cprvision.com>
>> wrote:
>> > Hi,
>> >
>> >  Yup I faced this problem before and flush to Hibernate group.They have
>> > suggested me some solution based on my mapping xml fle....Why don't u
>> send
>> > me that mapping xml and let me compare with mine.....Actually Even though
>> it
>> > look like Server error,its more to do with hibernate ....Please feel free
>> to
>> > currect me if my assumption is  wrong
>> >
>> > Many Thanks and Regards,
>> >
>> > Jerson
>> >
>> >
>> > -----Original Message-----
>> > From: abhishek jain [mailto:abhishek.netj...@gmail.com]
>> > Sent: Friday, February 25, 2011 2:31 PM
>> > To: Struts Users Mailing List
>> > Subject: Exception in hibernate3
>> >
>> > hi,
>> > I am not sure if i am ringing the correct list, but i am sure people here
>> > must have encountered this problem. I am new to hibernate and when i ran
>> the
>> > code on server it was fine , strangely next day it keep on giving this
>> error
>> > till i restart tomcat.
>> >
>> > The last packet successfully received from the server was 54,880,316
>> > milliseconds ago.  The last packet sent successfully to the server was
>> > 54,880,317 milliseconds ago. is longer than the server configured value
>> of
>> > 'wait_timeout'. You should consider either expiring and/or testing
>> > connection validity before use in your application, increasing the server
>> > configured values for client timeouts, or using the Connector/J
>> connection
>> > property 'autoReconnect=true' to avoid this problem.
>> >
>> > I have searched a lot on net and added the following properties on
>> > hibernate.cfg.xml, as people there were suggesting this,but of no use.
>> > <!-- Sessions and transactions -->
>> > <!-- Use the C3P0 connection pool provider -->
>> > <property name="hibernate.c3p0.min_size">5</property>
>> > <property name="hibernate.c3p0.max_size">20</property>
>> > <property name="hibernate.c3p0.timeout">300</property>
>> > <property name="hibernate.c3p0.max_statements">50</property>
>> > <property name="hibernate.c3p0.idle_test_period">3000</property>
>> > <property name="current_session_context_class">thread</property>
>> >
>> >
>> >
>> > Pl. help me.
>> > I have used hibernate3 with myeclipse as the development environment, and
>> am
>> > using mysql 5.x and centos (Linux) with Tomcat 5.x
>> > --
>>
>



-- 
Maurizio Cucchiara

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to