Author: dblevins
Date: Wed Aug 20 11:23:52 2008
New Revision: 687411
URL: http://svn.apache.org/viewvc?rev=687411&view=rev
Log:
Call stop() on the remaining ResourceAdapters during destroy()
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=687411&r1=687410&r2=687411&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
Wed Aug 20 11:23:52 2008
@@ -42,6 +42,8 @@
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.naming.NameAlreadyBoundException;
+import javax.naming.Binding;
+import javax.naming.NamingEnumeration;
import javax.persistence.EntityManagerFactory;
import javax.resource.spi.BootstrapContext;
import javax.resource.spi.ConnectionManager;
@@ -185,7 +187,7 @@
SystemInstance system = SystemInstance.get();
system.setComponent(Assembler.class, this);
-
+
containerSystem = new CoreContainerSystem();
system.setComponent(ContainerSystem.class, containerSystem);
@@ -227,7 +229,7 @@
public static void installNaming() {
if (System.getProperty(DUCT_TAPE_PROPERTY) != null) return;
-
+
/* Add IntraVM JNDI service /////////////////////*/
Properties systemProperties = System.getProperties();
synchronized (systemProperties) {
@@ -438,8 +440,8 @@
logger.info("createApplication.start", appInfo.jarPath);
- // To start out, ensure we don't already have any beans deployed with
duplicate IDs. This
- // is a conflict we can't handle.
+ // To start out, ensure we don't already have any beans deployed with
duplicate IDs. This
+ // is a conflict we can't handle.
List<String> used = new ArrayList<String>();
for (EjbJarInfo ejbJarInfo : appInfo.ejbJars) {
for (EnterpriseBeanInfo beanInfo : ejbJarInfo.enterpriseBeans) {
@@ -671,6 +673,26 @@
}
}
+ NamingEnumeration<Binding> namingEnumeration = null;
+ try {
+ namingEnumeration =
containerSystem.getJNDIContext().listBindings("java:openejb/Resource");
+ } catch (NamingException ignored) {
+ // no resource adapters were created
+ }
+ while (namingEnumeration != null &&
namingEnumeration.hasMoreElements()) {
+ Binding binding = namingEnumeration.nextElement();
+ Object object = binding.getObject();
+ if (object instanceof ResourceAdapter) {
+ ResourceAdapter resourceAdapter = (ResourceAdapter) object;
+ try {
+ logger.info("Stopping ResourceAdapter: " +
binding.getName());
+ resourceAdapter.stop();
+ } catch (Exception e) {
+ logger.fatal("ResourceAdapter Shutdown Failed: " +
binding.getName(), e);
+ }
+ }
+ }
+
SystemInstance.get().removeComponent(OpenEjbConfiguration.class);
SystemInstance.get().removeComponent(JtaEntityManagerRegistry.class);
SystemInstance.get().removeComponent(TransactionSynchronizationRegistry.class);
@@ -874,7 +896,7 @@
// MDB container has a resource adapter string name that
// must be replaced with the real resource adapter instance
replaceResourceAdapterProperty(serviceRecipe);
-
+
Object service = serviceRecipe.create();
logUnusedProperties(serviceRecipe, serviceInfo);
@@ -1027,8 +1049,7 @@
Map<String, Object> unset = serviceRecipe.getUnsetProperties();
unset.remove("threadPoolSize");
- logUnusedProperties(unset, serviceInfo)
- ;
+ logUnusedProperties(unset, serviceInfo);
} else if (service instanceof ManagedConnectionFactory) {
ManagedConnectionFactory managedConnectionFactory =
(ManagedConnectionFactory) service;