Hi Guys,

It looks like I'm able to put the mail server in to an infinite loop if I call 
close on the root application context. (Stack and cause below)

The shutdown is failing on the destroy method on the 'mailqueuefactorybean' :
<bean id="mailqueuefactory" 
class="org.apache.james.queue.activemq.ActiveMQMailQueueFactory" 
depends-on="broker"/>

  @PreDestroy    public void destroy() {        for (String mbean : mbeans) {   
         unregisterMBean(mbean); <-- throws 
java.util.ConcurrentModificationException here        }
        for (MailQueue mailQueue : queues.values()) {            
LifecycleUtil.dispose(mailQueue);        }
    }

WARN  16:10:48 | InitDestroyAnnotationBeanPostProcessor | Invocation of destroy 
method failed on bean with name 'mailqueuefactory': 
java.util.ConcurrentModificationExceptionERROR 16:10:48 | JamesMailetContext | 
Exception caught in 
OutboundDelivery.run()org.apache.james.queue.api.MailQueue$MailQueueException: 
Unable to dequeue next message;  nested exception is:     
javax.jms.IllegalStateException: The Session is closed  at 
org.apache.james.queue.jms.JMSMailQueue.deQueue(JMSMailQueue.java:171)       at 
com.liverton.seemail.transport.OutboundDelivery.run(OutboundDelivery.java:655)  
     at java.lang.Thread.run(Thread.java:722)Caused by: 
javax.jms.IllegalStateException: The Session is closed       at 
org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java:731)    at 
org.apache.activemq.ActiveMQSession.commit(ActiveMQSession.java:554) at 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)   
     at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)     at 
org.springframework.jms.connection.CachingConnectionFactory$CachedSessionInvocationHandler.invoke(CachingConnectionFactory.java:348)
 at com.sun.proxy.$Proxy96.commit(Unknown Source)        at 
org.apache.james.queue.jms.JMSMailQueue.deQueue(JMSMailQueue.java:116)       
... 2 moreERROR 16:10:48 | JamesMailetContext | Exception caught in 
OutboundDelivery.run()org.apache.james.queue.api.MailQueue$MailQueueException: 
Unable to dequeue next message;  nested exception is:        
javax.jms.IllegalStateException: The Session is closed  at 
org.apache.james.queue.jms.JMSMailQueue.deQueue(JMSMailQueue.java:171)       at 
com.liverton.seemail.transport.OutboundDelivery.run(OutboundDelivery.java:655)  
     at java.lang.Thread.run(Thread.java:722)Caused by: 
javax.jms.IllegalStateException: The Session is closed       at 
org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java:731)    at 
org.apache.activemq.ActiveMQSession.commit(ActiveMQSession.java:554) at 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)   
     at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)     at 
org.springframework.jms.connection.CachingConnectionFactory$CachedSessionInvocationHandler.invoke(CachingConnectionFactory.java:348)
 at com.sun.proxy.$Proxy96.commit(Unknown Source)        at 
org.apache.james.queue.jms.JMSMailQueue.deQueue(JMSMailQueue.java:116)       
... 2 more
Regards,

Johnny Minty
                                          

Reply via email to