activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Strachan" <james.strac...@gmail.com>
Subject Re: Session closed after a while(random)
Date Tue, 18 Jul 2006 16:41:16 GMT
It sounds like for some reason your transport is being closed due to
some kind of network issue. Generally if your code is not doing it
then the only time a session is closed is if the transport fails with
a serious exception.

So I'd

* enable debugging logging to watch the networking code and look for
errors/reconnections

Does your application run in a single JVM? i.e. there is just 1 JVM
with all the code inside and no TCP is being used at all? If not it
sounds like networking is failing such as a socket or inactivity
timeout or something - so either change your failover: configuration
or disable the inactivity timeout

http://incubator.apache.org/activemq/configuring-wire-formats.html

On 7/18/06, Adrian Tarau <ady@daxtechnologies.com> wrote:
> Anybody, please  :) I don't know how to continue with this issue ...
>
> Adrian Tarau wrote:
> > Any thoughts  ???
> >
> > Adrian Tarau wrote:
> >> I think I found the cause???? :)
> >>
> >> Look at this stack trace(which seems to be the source of our
> >> problems, after this exceptions we got "Session close"), which at
> >> some moment in time I got it(see bellow -  I will mark with bold the
> >> what's important). Look at the bold stack entry, in
> >> ActiveMQConnection.onException.
> >> Un unrecoverable error in transport close the sessions, consumers,
> >> listeners , etc but doesn't close the connection.
> >>
> >> My question is how can I avoid getting the "Session close" message?
> >> How can I test if the session is closed? It is this the right way to
> >> handle a transport error, cleaning up the connection?
> >>
> >> I cannot test if the session is closed(ActiveMQSession.closed field
> >> is private), eventually I can try to do something with the session
> >> and in case of failure, I will recreate the session. Is this the
> >> right way to do it?
> >>
> >> Thanks.
> >>
> >> /**
> >>     * An unrecoverable exception has occured on the transport
> >>     * @param error
> >>     */
> >> public void onException(final IOException error) {
> >>        onAsyncException(error);
> >>        asyncConnectionThread.execute(new Runnable(){
> >>            public void run() {
> >>                *transportFailed(error);*
> >>
> >> ServiceSupport.dispose(ActiveMQConnection.this.transport);
> >>                brokerInfoReceived.countDown();
> >>                      for (Iterator iter =
> >> transportListeners.iterator(); iter.hasNext();) {
> >>                    TransportListener listener = (TransportListener)
> >> iter.next();
> >>                    listener.onException(error);
> >>                }
> >>            }
> >>        });
> >>    }
> >>
> >> and then transportFailed
> >>
> >> protected void transportFailed(IOException error){
> >>        transportFailed.set(true);
> >>        if (firstFailureError == null) {
> >>            firstFailureError = error;
> >>        }
> >>        if (!closed.get() && !closing.get()) {
> >>            try{
> >>                *cleanup();*
> >>            }catch(JMSException e){
> >>               log.warn("Cleanup failed",e);
> >>            }
> >>        }
> >>    }
> >>
> >> and then cleanup
> >>
> >> public void cleanup() throws JMSException {
> >>              if( advisoryConsumer!=null ) {
> >>            advisoryConsumer.dispose();
> >>            advisoryConsumer=null;
> >>        }
> >>              for (Iterator i = this.sessions.iterator(); i.hasNext();) {
> >>            *ActiveMQSession s = (ActiveMQSession) i.next();
> >>            s.dispose();*
> >>        }
> >>        for (Iterator i = this.connectionConsumers.iterator();
> >> i.hasNext();) {
> >>            ActiveMQConnectionConsumer c =
> >> (ActiveMQConnectionConsumer) i.next();
> >>            c.dispose();
> >>        }
> >>        for (Iterator i = this.inputStreams.iterator(); i.hasNext();) {
> >>            ActiveMQInputStream c = (ActiveMQInputStream) i.next();
> >>            c.dispose();
> >>        }
> >>        for (Iterator i = this.outputStreams.iterator(); i.hasNext();) {
> >>            ActiveMQOutputStream c = (ActiveMQOutputStream) i.next();
> >>            c.dispose();
> >>        }
> >>
> >>        if(isConnectionInfoSentToBroker){
> >>            if(!transportFailed.get() && !closing.get()){
> >>                asyncSendPacket(info.createRemoveCommand());
> >>            }
> >>            isConnectionInfoSentToBroker=false;
> >>        }              if( userSpecifiedClientID ) {
> >>            info.setClientId(null);
> >>            userSpecifiedClientID=false;
> >>        }
> >>        clientIDSet = false;
> >>
> >>        started.set(false);
> >>    }
> >>
> >> *Stack trace*
> >>
> >>    at
> >> org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:45)
> >>
> >>    at
> >> org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1462)
> >>
> >>    *at
> >> org.apache.activemq.ActiveMQConnection.onException(ActiveMQConnection.java:1478)*
> >>
> >>    at
> >> org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:94)
> >>
> >>    at
> >> org.apache.activemq.transport.ResponseCorrelator.onException(ResponseCorrelator.java:120)
> >>
> >>    at
> >> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:94)
> >>
> >>    at
> >> org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:63)
> >>
> >>    at
> >> org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:76)
> >>    at
> >> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:44)
> >>
> >>    at
> >> org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
> >>
> >>    at
> >> org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:211)
> >>
> >>    at
> >> org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:64)
> >>
> >>    at
> >> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:97)
> >>
> >>    at
> >> org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:63)
> >>
> >>    at
> >> org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:76)
> >>    at
> >> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:44)
> >>
> >>    at
> >> org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:68)
> >>
> >>    at
> >> org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:73)
> >>
> >>    at
> >> org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1131)
> >>
> >>    at
> >> org.apache.activemq.ActiveMQSession.syncSendPacket(ActiveMQSession.java:1667)
> >>
> >>    at
> >> org.apache.activemq.ActiveMQMessageConsumer.<init>(ActiveMQMessageConsumer.java:196)
> >>
> >>    at
> >> org.apache.activemq.ActiveMQSession.createConsumer(ActiveMQSession.java:840)
> >>
> >>    at
> >> org.apache.activemq.ActiveMQSession.createConsumer(ActiveMQSession.java:800)
> >>
> >>    at
> >> com.daxtechnologies.sams.manager.JmsSessionWrapper.createConsumer(JmsSessionWrapper.java:106)
> >>
> >>    at
> >> com.daxtechnologies.sams.manager.AbstractSamsManagerQueue.consume(AbstractSamsManagerQueue.java:133)
> >>
> >>    at
> >> com.daxtechnologies.sams.manager.SamsManagerQueues$AbstractQueueRunnable.consume(SamsManagerQueues.java:602)
> >>
> >>    at
> >> com.daxtechnologies.sams.manager.SamsManagerQueues$AbstractQueueRunnable.throttleQueue(SamsManagerQueues.java:571)
> >>
> >>    at
> >> com.daxtechnologies.sams.manager.SamsManagerQueues$AbstractQueueRunnable.run(SamsManagerQueues.java:622)
> >>
> >>    at
> >> com.daxtechnologies.sams.manager.SamsManagerThreadPool$WorkerThead.run(SamsManagerThreadPool.java:188)
> >>
> >> Caused by: java.io.InterruptedIOException: Interrupted.
> >>    at
> >> org.apache.activemq.transport.FutureResponse.set(FutureResponse.java:56)
> >>    at
> >> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:89)
> >>
> >>
> >> Adrian Tarau wrote:
> >>> Even more :)
> >>>
> >>> As I told you I created a a Session wrapper over the ActiveMQ
> >>> session in order to catch the close call.
> >>>
> >>> you can see down bellow the close method :
> >>>
> >>> public void close() throws JMSException {
> >>>        try {
> >>>            IllegalAccessError illegalAccessError = new
> >>> IllegalAccessError("I don't want to close");
> >>>            StringWriter sw = new StringWriter();
> >>>            illegalAccessError.printStackTrace(new PrintWriter(sw));
> >>>            LOG.error("Somebody closed the session, let's see
> >>> who\n\n" + sw.toString());
> >>>            System.out.println("Somebody closed the session, let's
> >>> see who\n\n" + sw.toString());
> >>>        } finally {
> >>>            session.close();
> >>>        }
> >>>    }
> >>>
> >>> Well, I looked in the error log, also looked in the container
> >>> log(JBoss) and didn't find any of theses  strings "Somebody ...".
> >>> The conclusion is that nobody called close explicit on the session.
> >>> I placed that on 3 systems and over the weekend I got on all this
> >>> problem. One common thing between the systems is that are all
> >>> loaded(are test machines) and on all everything start to get
> >>> "Session close" after I got this exception(see bellow).
> >>>
> >>> I don't know why we got java.io.InterruptedIOException:, it could be
> >>> possible because of me :). We interrupt the current thread(which
> >>> consume the message) if didn't respond after 60 secs(some kind of
> >>> watchdog) so it is possible to be because I call explicit
> >>> Thread.interrupt().
> >>>
> >>> Anyway, I thinkg, this should affect the sessions state(the close
> >>> field should not be turned false by any other piece of code, except
> >>> close() function, right?) should not be affected by am interrupt
> >>> exception in a consumer.
> >>>
> >>> Thats all I could get about this problem with session close, anyway
> >>> I think I will create all the time the session, to avoid this problem.
> >>>
> >>> Thanks.
> >>>
> >>>
> >>> 2006-07-15 03:24:54,628 [AcitveMQ Connection Worker:
> >>> vm://localhost#0] ERROR
> >>> com.daxtechnologies.sams.manager.SamsManagerJMS - JMS Error
> >>> javax.jms.JMSException: Interrupted.
> >>>    at
> >>> org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:45)
> >>>
> >>>    at
> >>> org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1462)
> >>>
> >>>    at
> >>> org.apache.activemq.ActiveMQConnection.onException(ActiveMQConnection.java:1478)
> >>>
> >>>    at
> >>> org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:94)
> >>>
> >>>    at
> >>> org.apache.activemq.transport.ResponseCorrelator.onException(ResponseCorrelator.java:120)
> >>>
> >>>    at
> >>> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:94)
> >>>
> >>>    at
> >>> org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:63)
> >>>
> >>>    at
> >>> org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:76)
> >>>
> >>>    at
> >>> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:44)
> >>>
> >>>    at
> >>> org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
> >>>
> >>>    at
> >>> org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:211)
> >>>
> >>>    at
> >>> org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:64)
> >>>
> >>>    at
> >>> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:97)
> >>>
> >>>    at
> >>> org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:63)
> >>>
> >>>    at
> >>> org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:76)
> >>>
> >>>    at
> >>> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:44)
> >>>
> >>>    at
> >>> org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:68)
> >>>
> >>>    at
> >>> org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:73)
> >>>
> >>>    at
> >>> org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1131)
> >>>
> >>>    at
> >>> org.apache.activemq.ActiveMQSession.syncSendPacket(ActiveMQSession.java:1667)
> >>>
> >>>    at
> >>> org.apache.activemq.ActiveMQMessageConsumer.<init>(ActiveMQMessageConsumer.java:196)
> >>>
> >>>    at
> >>> org.apache.activemq.ActiveMQSession.createConsumer(ActiveMQSession.java:840)
> >>>
> >>>    at
> >>> org.apache.activemq.ActiveMQSession.createConsumer(ActiveMQSession.java:800)
> >>>
> >>>    at
> >>> com.daxtechnologies.sams.manager.JmsSessionWrapper.createConsumer(JmsSessionWrapper.java:106)
> >>>
> >>>    at
> >>> com.daxtechnologies.sams.manager.AbstractSamsManagerQueue.consume(AbstractSamsManagerQueue.java:133)
> >>>
> >>>    at
> >>> com.daxtechnologies.sams.manager.SamsManagerQueues$AbstractQueueRunnable.consume(SamsManagerQueues.java:602)
> >>>
> >>>    at
> >>> com.daxtechnologies.sams.manager.SamsManagerQueues$AbstractQueueRunnable.throttleQueue(SamsManagerQueues.java:571)
> >>>
> >>>    at
> >>> com.daxtechnologies.sams.manager.SamsManagerQueues$AbstractQueueRunnable.run(SamsManagerQueues.java:622)
> >>>
> >>>    at
> >>> com.daxtechnologies.sams.manager.SamsManagerThreadPool$WorkerThead.run(SamsManagerThreadPool.java:188)
> >>>
> >>> Caused by: java.io.InterruptedIOException: Interrupted.
> >>>    at
> >>> org.apache.activemq.transport.FutureResponse.set(FutureResponse.java:56)
> >>>
> >>>    at
> >>> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:89)
> >>>
> >>>    ... 23 more
> >>> 2006-07-15 03:24:54,805 [SAMS-Worker-queue.contact_type-3] ERROR
> >>> com.daxtechnologies.sams.manager.AbstractSamsManagerQueue - Cannot
> >>> consume message from queue queue 'Contact Queue
> >>> <system/ady@daxtechnologies.com>' javax.jms.JMSException: Interrupted.
> >>>    at
> >>> org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:57)
> >>>
> >>>    at
> >>> org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1141)
> >>>
> >>>    at
> >>> org.apache.activemq.ActiveMQSession.syncSendPacket(ActiveMQSession.java:1667)
> >>>
> >>>    at
> >>> org.apache.activemq.ActiveMQMessageConsumer.close(ActiveMQMessageConsumer.java:516)
> >>>
> >>>    at
> >>> com.daxtechnologies.sams.manager.AbstractSamsManagerQueue.consume(AbstractSamsManagerQueue.java:145)
> >>>
> >>>    at
> >>> com.daxtechnologies.sams.manager.SamsManagerQueues$AbstractQueueRunnable.consume(SamsManagerQueues.java:602)
> >>>
> >>>    at
> >>> com.daxtechnologies.sams.manager.SamsManagerQueues$AbstractQueueRunnable.throttleQueue(SamsManagerQueues.java:571)
> >>>
> >>>    at
> >>> com.daxtechnologies.sams.manager.SamsManagerQueues$AbstractQueueRunnable.run(SamsManagerQueues.java:622)
> >>>
> >>>    at
> >>> com.daxtechnologies.sams.manager.SamsManagerThreadPool$WorkerThead.run(SamsManagerThreadPool.java:188)
> >>>
> >>> Caused by: java.io.InterruptedIOException: Interrupted.
> >>>    at
> >>> org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:40)
> >>>
> >>>    at
> >>> org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:74)
> >>>
> >>>    at
> >>> org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1131)
> >>>
> >>>    ... 7 more
> >>>
> >>> Adrian Tarau wrote:
> >>>> More about closed session :)
> >>>>
> >>>> Could be possible that the closing problem could occur because the
> >>>> Session is not per Thread, even if it is accessed by only on thread
> >>>> at the time(or it should be accessed, but sometime is not -
> >>>> backport-concurent problems)?
> >>>>
> >>>> The code look like that :
> >>>> class MyStorageQueue {
> >>>>   private  Session session;
> >>>>   private Queue queue;
> >>>>   protected final Semaphore lock = new Semaphore(1, true);
> >>>>     ....
> >>>>  public Object consume() {
> >>>>     ....
> >>>>  }
> >>>>
> >>>>  public void publish(Object object) {
> >>>>     ....
> >>>>  }
> >>>> }
> >>>>
> >>>> and usage in different threads
> >>>> MyStorageQueue queue = getNextQueue(...);
> >>>> if (queue.lock.tryAcquire()) {
> >>>>                try {
> >>>>                       Object value = consume(queue);
> >>>>                        .....
> >>>>                } finally {
> >>>>                    queue.lock.release();
> >>>>                }
> >>>> }
> >>>>
> >>>> Anyway I created a wrapper over an ActiveMQ session, and dump the
> >>>> stack trace to see who calls the close method.
> >>>>
> >>>>
> >>>>
> >>>> Adrian Tarau wrote:
> >>>>> Debugging remove is not a problem, the problem is that I need to
> >>>>> start the application in debug mode and keep the IDE with a
> >>>>> breakpoint for days until it happens.
> >>>>>
> >>>>> I think I will recompile the ActiveMQ and dump the thread stack
> >>>>> trace :)
> >>>>>
> >>>>> Sanjiv Jivan wrote:
> >>>>>> You can attach your debugger to the Java process on the remote
> >>>>>> machine and
> >>>>>> set the breakpoint on the session.close() call. Once the
> >>>>>> breakpoint it hit,
> >>>>>> you can examine the call stack in your debugger.
> >>>>>>
> >>>>>> Use the JPDA socket JVM args when starting your Java process.
Eg
> >>>>>> :  -Xdebug
> >>>>>> -Xnoagent
> >>>>>> -Djava.compiler=NONE-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> On 7/13/06, Adrian Tarau <ady@daxtechnologies.com> wrote:
> >>>>>>>
> >>>>>>> That's great but this usually happens on the remote machine,
> >>>>>>> after a few
> >>>>>>> days :)
> >>>>>>>
> >>>>>>> James Strachan wrote:
> >>>>>>> > Maybe try run your code in a debugger and set breakpoints
in the
> >>>>>>> > ActiveMQSession class to see where & why the session
gets
> >>>>>>> closed? (The
> >>>>>>> > code's pretty easy to follow, its a relatively simple
class).
> >>>>>>> >
> >>>>>>> >
> >>>>>>> > On 7/13/06, Adrian Tarau <ady@daxtechnologies.com>
wrote:
> >>>>>>> >> James, do you want the sources or can you recommend
me some
> >>>>>>> actions? To
> >>>>>>> >> create the session all the time, not to cache it?
> >>>>>>> >>
> >>>>>>> >> Adrian Tarau wrote:
> >>>>>>> >> > Ok, so who close the session? :)
> >>>>>>> >> >
> >>>>>>> >> > James Strachan wrote:
> >>>>>>> >> >> Sorry I forgot about that :)
> >>>>>>> >> >>
> >>>>>>> >> >> The only time a VM broker is shut down
is explicitly via
> >>>>>>> application
> >>>>>>> >> >> code or a shutdown handler.
> >>>>>>> >> >>
> >>>>>>> >> >> On 7/13/06, Adrian Tarau <ady@daxtechnologies.com>
wrote:
> >>>>>>> >> >>> I use vm connector so no connection
problems should be
> >>>>>>> involved,
> >>>>>>> >> right?
> >>>>>>> >> >>>
> >>>>>>> >> >>> James Strachan wrote:
> >>>>>>> >> >>> > BTW are you using auto-reconnect?
It could be that the
> >>>>>>> socket is
> >>>>>>> >> >>> > terminated due to some network
issue?
> >>>>>>> >> >>> >
> >>>>>>> >> >>> >
> >>>>>>> >> >>>
> >>>>>>> >>
> >>>>>>> http://incubator.apache.org/activemq/how-can-i-support-auto-reconnection.html
> >>>>>>>
> >>>>>>> >>
> >>>>>>> >> >>>
> >>>>>>> >> >>> >
> >>>>>>> >> >>> >
> >>>>>>> >> >>> > On 7/13/06, Adrian Tarau <ady@daxtechnologies.com>
wrote:
> >>>>>>> >> >>> >> I made a search for "close"
in the source code and
> >>>>>>> except from
> >>>>>>> >> >>> produces,
> >>>>>>> >> >>> >> consumers and inputstream
and outputstream I don't
> >>>>>>> close the
> >>>>>>> >> >>> connection
> >>>>>>> >> >>> >> or session, except on the
JVM shutdown(Thread hook).
> >>>>>>> >> >>> >>
> >>>>>>> >> >>> >> I can provide you(private
- not on the mailing list) the
> >>>>>>> >> source code
> >>>>>>> >> >>> >> because this is very annoying.
> >>>>>>> >> >>> >> Thanks.
> >>>>>>> >> >>> >>
> >>>>>>> >> >>> >> James Strachan wrote:
> >>>>>>> >> >>> >> > Apart from inactivity
timeouts on the transport
> >>>>>>> layer, we
> >>>>>>> >> >>> generally
> >>>>>>> >> >>> >> > don't close sessions.
Are you sure nothing in your
> >>>>>>> application
> >>>>>>> >> >>> code is
> >>>>>>> >> >>> >> > trying to close the
session?
> >>>>>>> >> >>> >> >
> >>>>>>> >> >>> >> > On 7/13/06, Adrian Tarau
<ady@daxtechnologies.com>
> >>>>>>> wrote:
> >>>>>>> >> >>> >> >> I have this issue
for some time with ActiveMQ 4.0
> >>>>>>> and 4.0.1.
> >>>>>>> >> >>> >> >>
> >>>>>>> >> >>> >> >> I use vm transport
and create one session used to
> >>>>>>> produce and
> >>>>>>> >> >>> consume
> >>>>>>> >> >>> >> >> messages. Everything
works fine, days in a row,
> >>>>>>> until it
> >>>>>>> >> start to
> >>>>>>> >> >>> >> throw
> >>>>>>> >> >>> >> >> exception that "Session
is closed". There are any
> >>>>>>> watch
> >>>>>>> >> dogs that
> >>>>>>> >> >>> >> close
> >>>>>>> >> >>> >> >> sessions after a
while, based on some criteria?
> >>>>>>> >> >>> >> >>
> >>>>>>> >> >>> >> >> I couldn't find
any rule, when or why it happens.
> >>>>>>> >> >>> >> >> Should I create
the session all the time - I
> >>>>>>> understood  is
> >>>>>>> >> time
> >>>>>>> >> >>> >> >> consuming and it
should be safe to cache it.
> >>>>>>> >> >>> >> >>
> >>>>>>> >> >>> >> >> Thanks.
> >>>>>>> >> >>> >> >>
> >>>>>>> >> >>> >> >> *javax.jms.IllegalStateException:
The Session is
> >>>>>>> closed
> >>>>>>> >> >>> >> >>     at
> >>>>>>> >> >>> >> >>
> >>>>>>> >> >>> >>
> >>>>>>> >> >>>
> >>>>>>> >>
> >>>>>>> org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java
> >>>>>>>
> >>>>>>> :577)
> >>>>>>> >>
> >>>>>>> >> >>>
> >>>>>>> >> >>> >>
> >>>>>>> >> >>> >> >>
> >>>>>>> >> >>> >> >>     at
> >>>>>>> >> >>> >> >>
> >>>>>>> >> >>> >>
> >>>>>>> >> >>>
> >>>>>>> >>
> >>>>>>> org.apache.activemq.ActiveMQSession.createConsumer(ActiveMQSession.java
> >>>>>>>
> >>>>>>> :799)*
> >>>>>>> >>
> >>>>>>> >> >>>
> >>>>>>> >> >>> >>
> >>>>>>> >> >>> >> >>
> >>>>>>> >> >>> >> >>
> >>>>>>> >> >>> >> >>
> >>>>>>> >> >>> >> >
> >>>>>>> >> >>> >> >
> >>>>>>> >> >>> >>
> >>>>>>> >> >>> >>
> >>>>>>> >> >>> >
> >>>>>>> >> >>> >
> >>>>>>> >> >>>
> >>>>>>> >> >>>
> >>>>>>> >> >>
> >>>>>>> >> >>
> >>>>>>> >> >
> >>>>>>> >>
> >>>>>>> >>
> >>>>>>> >
> >>>>>>> >
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>>
> >>
> >>
> >>
> >
>
>


-- 

James
-------
http://radio.weblogs.com/0112098/

Mime
View raw message