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 2015/01/26 22:47:04 UTC
[1/2] tomee git commit: destroying a resource adapter correctly
Repository: tomee
Updated Branches:
refs/heads/develop 9fbaca6bb -> 0ee520090
destroying a resource adapter correctly
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/8817e9d5
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/8817e9d5
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/8817e9d5
Branch: refs/heads/develop
Commit: 8817e9d5535166e65ac4efb07e6a9a377bfb48fe
Parents: 9fbaca6
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Mon Jan 26 22:36:49 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Mon Jan 26 22:36:49 2015 +0100
----------------------------------------------------------------------
.../openejb/assembler/classic/Assembler.java | 85 +++++++++++++++++++-
1 file changed, 84 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/8817e9d5/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
index b46ac25..40d33d8 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
@@ -150,6 +150,7 @@ import org.apache.webbeans.spi.api.ResourceReference;
import org.apache.xbean.finder.ClassLoaders;
import org.apache.xbean.finder.ResourceFinder;
import org.apache.xbean.finder.UrlSet;
+import org.apache.xbean.naming.reference.SimpleReference;
import org.apache.xbean.recipe.ObjectRecipe;
import org.apache.xbean.recipe.Option;
import org.apache.xbean.recipe.UnsetPropertiesRecipe;
@@ -192,6 +193,8 @@ import java.io.Externalizable;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InvalidObjectException;
+import java.io.ObjectStreamException;
import java.io.Serializable;
import java.lang.instrument.ClassFileTransformer;
import java.lang.instrument.Instrumentation;
@@ -217,6 +220,7 @@ import java.util.Properties;
import java.util.Set;
import java.util.TreeMap;
import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.ReentrantLock;
@@ -1624,7 +1628,23 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
}
private void destroyResource(final String name, final String className, final Object object) {
- if (object instanceof ResourceAdapter) {
+ if (object instanceof ResourceAdapterReference) {
+ final ResourceAdapterReference resourceAdapter = (ResourceAdapterReference) object;
+ try {
+ logger.info("Stopping ResourceAdapter: " + name);
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Stopping ResourceAdapter: " + className);
+ }
+
+ if (resourceAdapter.pool != null && ExecutorService.class.isInstance(resourceAdapter.pool)) {
+ ExecutorService.class.cast(resourceAdapter.pool).shutdownNow();
+ }
+ resourceAdapter.ra.stop();
+ } catch (final Throwable t) {
+ logger.fatal("ResourceAdapter Shutdown Failed: " + name, t);
+ }
+ } else if (object instanceof ResourceAdapter) {
final ResourceAdapter resourceAdapter = (ResourceAdapter) object;
try {
logger.info("Stopping ResourceAdapter: " + name);
@@ -2002,6 +2022,30 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
} catch (final NamingException e) {
logger.warning("can't unbind resource '{0}'", connector);
}
+
+ for (final ResourceInfo outbound : connector.outbound) {
+ try {
+ destroyLookedUpResource(globalContext, outbound.id, OPENEJB_RESOURCE_JNDI_PREFIX + outbound.id);
+ } catch (final Exception e) {
+ // no-op
+ }
+ }
+ for (final ResourceInfo outbound : connector.adminObject) {
+ try {
+ destroyLookedUpResource(globalContext, outbound.id, OPENEJB_RESOURCE_JNDI_PREFIX + outbound.id);
+ } catch (final Exception e) {
+ // no-op
+ }
+ }
+ for (final MdbContainerInfo container : connector.inbound) {
+ try {
+ containerSystem.removeContainer(container.id);
+ config.containerSystem.containers.remove(container);
+ this.containerSystem.getJNDIContext().unbind(JAVA_OPENEJB_NAMING_CONTEXT + container.service + "/" + container.id);
+ } catch (final Exception e) {
+ // no-op
+ }
+ }
}
containerSystem.removeAppContext(appInfo.appId);
@@ -2459,6 +2503,8 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
final Map<String, Object> unset = serviceRecipe.getUnsetProperties();
unset.remove("threadPoolSize");
logUnusedProperties(unset, serviceInfo);
+
+ service = new ResourceAdapterReference(resourceAdapter, threadPool, OPENEJB_RESOURCE_JNDI_PREFIX + serviceInfo.id);
} else if (service instanceof ManagedConnectionFactory) {
final ManagedConnectionFactory managedConnectionFactory = (ManagedConnectionFactory) service;
@@ -2992,4 +3038,41 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
this.instance = instance;
}
}
+
+ public static final class ResourceAdapterReference extends SimpleReference {
+ private transient ResourceAdapter ra;
+ private transient Executor pool;
+ private final String jndi;
+
+ public ResourceAdapterReference(final ResourceAdapter ra, final Executor pool, final String jndi) {
+ this.ra = ra;
+ this.pool = pool;
+ this.jndi = jndi;
+ }
+
+ public Executor getPool() {
+ return pool;
+ }
+
+ public ResourceAdapter getRa() {
+ return ra;
+ }
+
+ public String getJndi() {
+ return jndi;
+ }
+
+ @Override
+ public Object getContent() throws NamingException {
+ return ra;
+ }
+
+ protected Object readResolve() throws ObjectStreamException {
+ try {
+ return SystemInstance.get().getComponent(ContainerSystem.class).getJNDIContext().lookup(jndi);
+ } catch (final NamingException e) {
+ throw new InvalidObjectException("name not found: " + jndi);
+ }
+ }
+ }
}
[2/2] tomee git commit: we just handle our reference in our IvmContext
Posted by rm...@apache.org.
we just handle our reference in our IvmContext
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/0ee52009
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/0ee52009
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/0ee52009
Branch: refs/heads/develop
Commit: 0ee5200903bae523760bb70927e468f476f4c166
Parents: 8817e9d
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Mon Jan 26 22:40:59 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Mon Jan 26 22:40:59 2015 +0100
----------------------------------------------------------------------
.../java/org/apache/openejb/assembler/classic/Assembler.java | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/0ee52009/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
index 40d33d8..feac0a1 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
@@ -150,7 +150,6 @@ import org.apache.webbeans.spi.api.ResourceReference;
import org.apache.xbean.finder.ClassLoaders;
import org.apache.xbean.finder.ResourceFinder;
import org.apache.xbean.finder.UrlSet;
-import org.apache.xbean.naming.reference.SimpleReference;
import org.apache.xbean.recipe.ObjectRecipe;
import org.apache.xbean.recipe.Option;
import org.apache.xbean.recipe.UnsetPropertiesRecipe;
@@ -3039,7 +3038,7 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
}
}
- public static final class ResourceAdapterReference extends SimpleReference {
+ public static final class ResourceAdapterReference extends Reference {
private transient ResourceAdapter ra;
private transient Executor pool;
private final String jndi;
@@ -3063,7 +3062,7 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
}
@Override
- public Object getContent() throws NamingException {
+ public Object getObject() throws NamingException {
return ra;
}