[ openjms-Bugs-1689845 ] Client shutdown problem

"SourceForge.net" <[email protected]> Wed, 25 Apr 2007 07:19:36 -0700
Newsgroups gmane.comp.java.openjms.devel
Message-ID <[email protected]>
Bugs item #1689845, was opened at 2007-03-28 22:46
Message generated for change (Comment added) made by tanderson
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=474136&aid=1689845&group_id=54559

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: client
Group: v0.7.7-alpha-3
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Jan Dittberner (jandd)
>Assigned to: Tim Anderson (tanderson)
Summary: Client shutdown problem

Initial Comment:
We have an OpenJMS-Client integrated in a web application. The OpenJMS connection is created and closed in an own JMSManager class which is started and stopped in a ServletContextListener. When starting the ServletContext we perform:

// initialize JNDI-Context
context = new InitialContext(cxtEnv);
// get connection
topicConnection = ((TopicConnectionFactory) context.lookup(factoryKeyTopic)).createTopicConnection();
topicConnection.start();
// create a QueueSession
topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);

on shutdown we do:

topicSession.close();
topicConnection.close();
context.close();

If the servlet container (Tomcat 5.5) is shut down the ClockDaemon from DefaultConnectionPool stays alive. After some seconds a NullPointerException is thrown. The tomcat process never stops. The following Stacktrace is logged:

Exception in thread "ManagedConnectionReaper1" java.lang.NullPointerException
	at org.apache.log4j.LogManager.getLogger(LogManager.java:188)
	at org.apache.log4j.Logger.getLogger(Logger.java:104)
	at org.apache.commons.logging.impl.Log4JLogger.getLogger(Log4JLogger.java:229)
	at org.apache.commons.logging.impl.Log4JLogger.error(Log4JLogger.java:193)
	at org.exolab.jms.net.connector.DefaultConnectionPool$IdleReaper.run(DefaultConnectionPool.java:644)
	at EDU.oswego.cs.dl.util.concurrent.ClockDaemon$RunLoop.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Log4J may not be available after the ServletContext is shutdown.

The following threads keep running:

org.apache.catalina.startup.Bootstrap at localhost:2738	
	Thread [Clock Daemon] (Running)	
	Thread [Timer-1] (Running)	
	Thread [http-8080-Processor25] (Running)	
	Thread [TP-Processor4] (Running)	
	Thread [DestroyJavaVM] (Running)	


----------------------------------------------------------------------

>Comment By: Tim Anderson (tanderson)
Date: 2007-04-26 00:19

Message:
Logged In: YES 
user_id=557161
Originator: NO

When the last reference to the physical connection to the server is
released, a reaper thread will be started to reap the connection.
This starts approximately 5 seconds after the reference is released and
closes the connection if it hasn't been subsequently used.

You may be able to work round the NullPointerException by adding a sleep
in the ServletContextListener to try and ensure that tomcat doesn't unload
resources until the DefaultConnectionPool has completed reaping.

Also note that of the above threads, only [Clock Daemon] belongs to
OpenJMS, and is a daemon thread - it won't prevent tomcat shutting down.

----------------------------------------------------------------------

Comment By: Jan Dittberner (jandd)
Date: 2007-04-12 01:16

Message:
Logged In: YES 
user_id=32700
Originator: YES

I tried 0.7.7-beta-1 and the problem still occurs.

----------------------------------------------------------------------

Comment By: Tim Anderson (tanderson)
Date: 2007-04-03 11:26

Message:
Logged In: YES 
user_id=557161
Originator: NO

Have you tried 0.7.7-beta-1?

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=474136&aid=1689845&group_id=54559

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/