unknown
2003-10-29 19:27:00 UTC
By: dantetang
Hi,
I got a problem... after idle for several hours, when I use
the sample program
to send presistent message, PersistenceException
thrown. The root cause of it
is a SQLException, Communication link failure.
The problem remains until I restart OpenJMS server.
Does anyone knows how to tackle this? Is it possible to
restart OpenJMS
programmatically?
Many Many Thanks in advance.
Best Regards,
Dante
Here are the exceptions for your reference:
javax.jms.JMSException: Failed to make message
persistent:
org.exolab.jms.persistence.PersistenceException:
Failed to add message=ID:193095ea-b867-1004-
88f4-6a8c0867c808,
destination=MM1InQueue (1)
at
sun.rmi.transport.StreamRemoteCall.exceptionReceivedFr
omServer(Stream
RemoteCall.java:245)
at sun.rmi.transport.StreamRemoteCall.executeCall
(StreamRemoteCall.java:
220)
at sun.rmi.server.UnicastRef.invoke
(UnicastRef.java:122)
at
org.exolab.jms.server.rmi.RmiJmsServerSession_Stub.send
Message(Unknown
Source)
at
org.exolab.jms.client.rmi.RmiJmsSessionStub.sendMessage
(RmiJmsSession
Stub.java:174)
at org.exolab.jms.client.JmsSession.sendMessage
(JmsSession.java:676)
at
org.exolab.jms.client.JmsMessageProducer.sendMessage
(JmsMessageProduc
er.java:238)
at org.exolab.jms.client.JmsQueueSender.send
(JmsQueueSender.java:156)
at org.exolab.jms.client.JmsQueueSender.send
(JmsQueueSender.java:113)
at
openjms.examples.client.console.SimpleSender.main
(SimpleSender.java:1
41)
org.exolab.jms.persistence.PersistenceException:
java.sql.SQLException: Communication link failure:
java.io.IOException
at org.gjt.mm.mysql.MysqlIO.clearAllReceive
(Unknown Source)
at org.gjt.mm.mysql.MysqlIO.sqlQueryDirect
(Unknown Source)
at org.gjt.mm.mysql.Connection.execSQL(Unknown
Source)
at
org.gjt.mm.mysql.PreparedStatement.executeUpdate
(Unknown Source)
at
org.gjt.mm.mysql.PreparedStatement.executeUpdate
(Unknown Source)
at
org.apache.commons.dbcp.DelegatingPreparedStatement.
executeUpdate(Del
egatingPreparedStatement.java:207)
at
org.apache.commons.dbcp.DelegatingPreparedStatement.
executeUpdate(Del
egatingPreparedStatement.java:207)
at org.exolab.jms.persistence.Messages.add
(Messages.java:190)
at
org.exolab.jms.persistence.RDBMSAdapter.addMessage
(RDBMSAdapter.java:
365)
at
org.exolab.jms.messagemgr.MessageMgr.addPersistentMe
ssage(MessageMgr.
java:369)
at org.exolab.jms.messagemgr.MessageMgr.add
(MessageMgr.java:281)
at
org.exolab.jms.server.JmsServerSession.sendMessage
(JmsServerSession.j
ava:350)
at
org.exolab.jms.server.rmi.RmiJmsServerSession.sendMess
age(RmiJmsServe
rSession.java:174)
at java.lang.reflect.Method.invoke(Native Method)
at sun.rmi.server.UnicastServerRef.dispatch
(UnicastServerRef.java:241)
at sun.rmi.transport.Transport$1.run
(Transport.java:152)
at java.security.AccessController.doPrivileged
(Native Method)
at sun.rmi.transport.Transport.serviceCall
(Transport.java:148)
at
sun.rmi.transport.tcp.TCPTransport.handleMessages
(TCPTransport.java:4
65)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.ru
n(TCPTransport
.java:706)
at java.lang.Thread.run(Thread.java:484)
----------------------------------------------------------------------
Message:
Logged In: YES
user_id=557161
Fixed in CVS. Support has been added to configure the
connection pool, via the <RdbmsDatabaseConfiguration/>
element. E.g.:
<RdbmsDatabaseConfiguration
driver="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost/openjms"
user="openjms"
password="openjms"
evictionInterval="3600"
testQuery="select current_date"/>
The above specifies to check idle connections every 3600
seconds using the query 'select current_date'. This ensures
that connections forcibly closed by MySQL will be detected
and discarded before OpenJMS attempts to use them.
Other connection pool configuration options are described in
$OPENJMS_HOME/docs/config/reference.html#RdbmsDatabas
eConfiguration
Changes will be available in the 0.7.6 RC3 release.
----------------------------------------------------------------------
Comment By: Tim Anderson (tanderson)
Date: 2003-10-28 15:22
Message:
Logged In: YES
user_id=557161
MySQL appears to be reclaiming the connection because it
has been inactive for too long.
Support needs to be added to configure the connection pool
to periodically check if connections are valid.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=474136&aid=831535&group_id=54559
Hi,
I got a problem... after idle for several hours, when I use
the sample program
to send presistent message, PersistenceException
thrown. The root cause of it
is a SQLException, Communication link failure.
The problem remains until I restart OpenJMS server.
Does anyone knows how to tackle this? Is it possible to
restart OpenJMS
programmatically?
Many Many Thanks in advance.
Best Regards,
Dante
Here are the exceptions for your reference:
javax.jms.JMSException: Failed to make message
persistent:
org.exolab.jms.persistence.PersistenceException:
Failed to add message=ID:193095ea-b867-1004-
88f4-6a8c0867c808,
destination=MM1InQueue (1)
at
sun.rmi.transport.StreamRemoteCall.exceptionReceivedFr
omServer(Stream
RemoteCall.java:245)
at sun.rmi.transport.StreamRemoteCall.executeCall
(StreamRemoteCall.java:
220)
at sun.rmi.server.UnicastRef.invoke
(UnicastRef.java:122)
at
org.exolab.jms.server.rmi.RmiJmsServerSession_Stub.send
Message(Unknown
Source)
at
org.exolab.jms.client.rmi.RmiJmsSessionStub.sendMessage
(RmiJmsSession
Stub.java:174)
at org.exolab.jms.client.JmsSession.sendMessage
(JmsSession.java:676)
at
org.exolab.jms.client.JmsMessageProducer.sendMessage
(JmsMessageProduc
er.java:238)
at org.exolab.jms.client.JmsQueueSender.send
(JmsQueueSender.java:156)
at org.exolab.jms.client.JmsQueueSender.send
(JmsQueueSender.java:113)
at
openjms.examples.client.console.SimpleSender.main
(SimpleSender.java:1
41)
org.exolab.jms.persistence.PersistenceException:
java.sql.SQLException: Communication link failure:
java.io.IOException
at org.gjt.mm.mysql.MysqlIO.clearAllReceive
(Unknown Source)
at org.gjt.mm.mysql.MysqlIO.sqlQueryDirect
(Unknown Source)
at org.gjt.mm.mysql.Connection.execSQL(Unknown
Source)
at
org.gjt.mm.mysql.PreparedStatement.executeUpdate
(Unknown Source)
at
org.gjt.mm.mysql.PreparedStatement.executeUpdate
(Unknown Source)
at
org.apache.commons.dbcp.DelegatingPreparedStatement.
executeUpdate(Del
egatingPreparedStatement.java:207)
at
org.apache.commons.dbcp.DelegatingPreparedStatement.
executeUpdate(Del
egatingPreparedStatement.java:207)
at org.exolab.jms.persistence.Messages.add
(Messages.java:190)
at
org.exolab.jms.persistence.RDBMSAdapter.addMessage
(RDBMSAdapter.java:
365)
at
org.exolab.jms.messagemgr.MessageMgr.addPersistentMe
ssage(MessageMgr.
java:369)
at org.exolab.jms.messagemgr.MessageMgr.add
(MessageMgr.java:281)
at
org.exolab.jms.server.JmsServerSession.sendMessage
(JmsServerSession.j
ava:350)
at
org.exolab.jms.server.rmi.RmiJmsServerSession.sendMess
age(RmiJmsServe
rSession.java:174)
at java.lang.reflect.Method.invoke(Native Method)
at sun.rmi.server.UnicastServerRef.dispatch
(UnicastServerRef.java:241)
at sun.rmi.transport.Transport$1.run
(Transport.java:152)
at java.security.AccessController.doPrivileged
(Native Method)
at sun.rmi.transport.Transport.serviceCall
(Transport.java:148)
at
sun.rmi.transport.tcp.TCPTransport.handleMessages
(TCPTransport.java:4
65)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.ru
n(TCPTransport
.java:706)
at java.lang.Thread.run(Thread.java:484)
----------------------------------------------------------------------
Comment By: Tim Anderson (tanderson)
Date: 2003-10-29 13:27Message:
Logged In: YES
user_id=557161
Fixed in CVS. Support has been added to configure the
connection pool, via the <RdbmsDatabaseConfiguration/>
element. E.g.:
<RdbmsDatabaseConfiguration
driver="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost/openjms"
user="openjms"
password="openjms"
evictionInterval="3600"
testQuery="select current_date"/>
The above specifies to check idle connections every 3600
seconds using the query 'select current_date'. This ensures
that connections forcibly closed by MySQL will be detected
and discarded before OpenJMS attempts to use them.
Other connection pool configuration options are described in
$OPENJMS_HOME/docs/config/reference.html#RdbmsDatabas
eConfiguration
Changes will be available in the 0.7.6 RC3 release.
----------------------------------------------------------------------
Comment By: Tim Anderson (tanderson)
Date: 2003-10-28 15:22
Message:
Logged In: YES
user_id=557161
MySQL appears to be reclaiming the connection because it
has been inactive for too long.
Support needs to be added to configure the connection pool
to periodically check if connections are valid.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=474136&aid=831535&group_id=54559