IMHO I have here one candidate

class ActiveMQConnection:

The method stop() is called on my stacktrace on the method close(), so first
try to close the ActiveMQ connection, then the transport (which is good).

The method stop() looks like this:

    @Override
    public void stop() throws JMSException {
        checkClosedOrFailed();
        *if (started.compareAndSet(true, false)) {*
            synchronized(sessions) {
                for (Iterator<ActiveMQSession> i = sessions.iterator();
i.hasNext();) {
                    ActiveMQSession s = i.next();
                    s.stop();
                }
            }
        }
    }

when I was debugging the code the condition was always false, the reason is
that the variable (AtomicBoolean) started is never set to true. You can
check this by looking yourself at this class.

It is set only to false when the close() method is invoked, but on the
method start() or on a similar place the invocation to /started.set(true); /
is missing.





--
View this message in context: 
http://activemq.2283324.n4.nabble.com/activemq-client-does-not-close-properly-connections-to-the-broker-tp4681005p4681084.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to