陈抒
It is all explained on page 20 of the user guide:
http://svn.apache.org/repos/asf/ibatis/java/ibatis-3/trunk/doc/en/iBATIS-3-User-Guide.pdf
the relevant section is:
• poolPingQuery – The Ping Query is sent to the database to validate that
a connection is in good working order and is ready to accept requests. The
default is "NO PING QUERY SET", which will cause most database drivers to fail
with a decent error message.
• poolPingEnabled – This enables or disables the ping query. If enabled,
you must also set the poolPingQuery property with
a valid SQL statement (preferably a very fast one). Default: false.
• poolPingConnectionsNotUsedFor – This configures how often the
poolPingQuery will be used. This can be set to match the typical timeout for a
database connection, to avoid unnecessary pings. Default: 0 (i.e. all
connections are pinged every time – but only if poolPingEnabled is true of
course).
Basically, if poolPingConnectionsNotUsedFor = 0 then the ping query will be
sent before every time the connection is used, and if
poolPingConnectionsNotUsedFor > 0 then the ping query will be sent if the
connection has been idle for at least that amount of time (you should set this
to a smaller value than your timeout, which looks like it is set to 38000
seconds or 10.5 hours).
Cheers
François
On May 12, 2010, at 8:18 AM, 陈抒 wrote:
> Hello:
> Thanks a lot!
> I am worrying about the overhead,because I don't know what iBatis3 will do
> when I enable poolPingQuery.
> I will try your idea soon.Thanks again!
>
>
> 陈抒
> Best regards
> http://blog.csdn.net/sheismylife
>
>
> 2010/5/12 François Schiettecatte <[email protected]>
> 陈抒
>
> Not sure which RDBMS you are using. Ideally you want to set the idle
> connection timeout in your pool to a value smaller than the idle connection
> timeout on the server end, the errors you were seeing suggests that the
> server has dropped the connection while the pool thinks it is still ok. From
> my limited experience 'autoReconnect=true' is not recommended, here is an
> excerpt from the MySQL documentation:
>
> ----
> Should the driver try to re-establish stale and/or dead connections? If
> enabled the driver will throw an exception for a queries issued on a stale or
> dead connection, which belong to the current transaction, but will attempt
> reconnect before the next query issued on the connection in a new
> transaction. The use of this feature is not recommended, because it has side
> effects related to session state and data consistency when applications don't
> handle SQLExceptions properly, and is only designed to be used when you are
> unable to configure your application to handle SQLExceptions resulting from
> dead and stale connections properly. Alternatively, investigate setting the
> MySQL server variable "wait_timeout" to some high value rather than the
> default of 8 hours.
> ----
>
> What you are doing will work but there is overhead associated with it, and
> you might want use a query like 'select 1' rather than hitting the jobstatus
> table. And you might want to read up on 'poolPingConnectionsNotUsedFor' on
> page 20 of the documentation, the default value is 0 which means the
> connection is pinged before every use.
>
> I would recommend you check into these parameters to see if you can do away
> with the ping query:
>
> <property name="poolMaximumActiveConnections" value="10" />
> <property name="poolMaximumIdleConnections" value="5" />
> <property name="poolMaximumCheckoutTime" value="20000" />
> <property name="poolTimeToWait" value="20000" />
>
> Cheers
>
> François
>
> On May 12, 2010, at 6:57 AM, 陈抒 wrote:
>
> > I don't know.
> > But I took one hour to test my application again,it works fine if the 'time
> > out' problem doesn't occurs.
> > Now I add two properties,let's wait and see if it can solve this or not.
> > <property name="poolPingQuery" value="select * from jobstatus"/>
> > <property name="poolPingEnabled" value="true"/>
> >
> > 陈抒
> > Best regards
> > http://blog.csdn.net/sheismylife
> >
> >
> > On Wed, May 12, 2010 at 6:46 PM, Martin Ellis <[email protected]> wrote:
> > On 12 May 2010 02:31, 陈抒 <[email protected]> wrote:
> > > Caused by: java.lang.NullPointerException
> > > at freebird.business.Email.getReceiverList(Email.java:105)
> >
> > What caused this NullPointerException?
> > Is it really related to the connection option?
> >
> > Martin
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]