You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/08/06 00:22:22 UTC
svn commit: r1616027 -
/tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
Author: rmannibucau
Date: Tue Aug 5 22:22:22 2014
New Revision: 1616027
URL: http://svn.apache.org/r1616027
Log:
don't forget to release providers when they are cdi beans
Modified:
tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
Modified: tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java?rev=1616027&r1=1616026&r2=1616027&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java (original)
+++ tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java Tue Aug 5 22:22:22 2014
@@ -63,7 +63,9 @@ import org.apache.openejb.util.Logger;
import org.apache.openejb.util.proxy.ProxyEJB;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.container.BeanManagerImpl;
+import org.apache.webbeans.context.creational.CreationalContextImpl;
+import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.management.ObjectName;
import javax.management.openmbean.TabularData;
@@ -86,6 +88,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -117,6 +120,7 @@ public class CxfRsHttpListener implement
private String servlet = "";
private final Collection<Pattern> staticResourcesList = new CopyOnWriteArrayList<>();
private final List<ObjectName> jmxNames = new ArrayList<>();
+ private final Collection<CreationalContext<?>> toRelease = new LinkedHashSet<>();
static {
STATIC_CONTENT_TYPES = new HashMap<>();
@@ -301,7 +305,9 @@ public class CxfRsHttpListener implement
final Set<Bean<?>> beans = bm.getBeans(clazz);
if (beans != null && !beans.isEmpty()) {
final Bean<?> bean = bm.resolve(beans);
- instances.add(bm.getReference(bean, clazz, bm.createCreationalContext(bean)));
+ final CreationalContextImpl<?> creationalContext = bm.createCreationalContext(bean);
+ instances.add(bm.getReference(bean, clazz, creationalContext));
+ toRelease.add(creationalContext);
continue;
}
} catch (final Throwable th) {
@@ -339,11 +345,18 @@ public class CxfRsHttpListener implement
@Override
public void undeploy() {
- // unregister all MBeans
for (final ObjectName objectName : jmxNames) {
LocalMBeanServer.unregisterSilently(objectName);
}
+ for (final CreationalContext<?> cc : toRelease) {
+ try {
+ cc.release();
+ } catch (final Exception e) {
+ LOGGER.warning(e.getMessage(), e);
+ }
+ }
+
final ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(CxfUtil.initBusLoader());
try {