mirror of https://github.com/apache/activemq.git
AMQ-3451: Fixed memory leak when using embedded ActiveMQ broker from Spring XML file. Need to clear a spring cache when stopping.
git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@1382055 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
aa6a6d73e5
commit
35f15ac8a1
|
@ -20,8 +20,6 @@ import java.beans.PropertyEditorManager;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
|
|
||||||
import org.apache.activemq.broker.BrokerService;
|
import org.apache.activemq.broker.BrokerService;
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.apache.xbean.spring.context.ResourceXmlApplicationContext;
|
import org.apache.xbean.spring.context.ResourceXmlApplicationContext;
|
||||||
import org.apache.xbean.spring.context.impl.URIEditor;
|
import org.apache.xbean.spring.context.impl.URIEditor;
|
||||||
import org.springframework.beans.BeansException;
|
import org.springframework.beans.BeansException;
|
||||||
|
|
|
@ -17,30 +17,24 @@
|
||||||
package org.apache.activemq.xbean;
|
package org.apache.activemq.xbean;
|
||||||
|
|
||||||
import java.beans.PropertyEditorManager;
|
import java.beans.PropertyEditorManager;
|
||||||
import java.io.File;
|
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.apache.activemq.broker.BrokerFactoryHandler;
|
import org.apache.activemq.broker.BrokerFactoryHandler;
|
||||||
import org.apache.activemq.broker.BrokerService;
|
import org.apache.activemq.broker.BrokerService;
|
||||||
import org.apache.activemq.spring.Utils;
|
import org.apache.activemq.spring.Utils;
|
||||||
import org.apache.activemq.util.IntrospectionSupport;
|
import org.apache.activemq.util.IntrospectionSupport;
|
||||||
import org.apache.activemq.util.URISupport;
|
import org.apache.activemq.util.URISupport;
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.apache.xbean.spring.context.ResourceXmlApplicationContext;
|
import org.apache.xbean.spring.context.ResourceXmlApplicationContext;
|
||||||
import org.apache.xbean.spring.context.impl.URIEditor;
|
import org.apache.xbean.spring.context.impl.URIEditor;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.BeansException;
|
import org.springframework.beans.BeansException;
|
||||||
import org.springframework.beans.FatalBeanException;
|
import org.springframework.beans.FatalBeanException;
|
||||||
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
|
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.ApplicationContextAware;
|
import org.springframework.context.ApplicationContextAware;
|
||||||
import org.springframework.core.io.ClassPathResource;
|
|
||||||
import org.springframework.core.io.FileSystemResource;
|
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
import org.springframework.core.io.UrlResource;
|
|
||||||
import org.springframework.util.ResourceUtils;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
|
@ -25,6 +25,7 @@ import org.apache.activemq.broker.BrokerService;
|
||||||
import org.apache.activemq.usage.SystemUsage;
|
import org.apache.activemq.usage.SystemUsage;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.CachedIntrospectionResults;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An ActiveMQ Message Broker. It consists of a number of transport
|
* An ActiveMQ Message Broker. It consists of a number of transport
|
||||||
|
@ -85,7 +86,13 @@ public class XBeanBrokerService extends BrokerService {
|
||||||
public void destroy() throws Exception {
|
public void destroy() throws Exception {
|
||||||
stop();
|
stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stop() throws Exception {
|
||||||
|
// must clear this Spring cache to avoid any memory leaks
|
||||||
|
CachedIntrospectionResults.clearClassLoader(getClass().getClassLoader());
|
||||||
|
super.stop();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets whether or not the broker is started along with the ApplicationContext it is defined within.
|
* Sets whether or not the broker is started along with the ApplicationContext it is defined within.
|
||||||
|
|
Loading…
Reference in New Issue