You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2012/06/21 10:35:12 UTC

svn commit: r1352450 - in /openejb/trunk/openejb/container: openejb-core/src/main/java/org/apache/openejb/assembler/classic/ openejb-core/src/main/java/org/apache/openejb/config/ openejb-core/src/main/java/org/apache/openejb/config/sys/ openejb-core/sr...

Author: dblevins
Date: Thu Jun 21 08:35:11 2012
New Revision: 1352450

URL: http://svn.apache.org/viewvc?rev=1352450&view=rev
Log:
Returned the observers to be a list rather than a map (TOMEE-247)
TOMEE-250: Added <Service> element to the config xml

Added:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Service.java
      - copied, changed from r1352396, openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServerObservers.java
Removed:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServerObservers.java
Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Openejb.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java
    openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/HooksTest.java
    openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java
    openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/observer/ObserverManager.java

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1352450&r1=1352449&r2=1352450&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Thu Jun 21 08:35:11 2012
@@ -65,6 +65,8 @@ import javax.transaction.TransactionMana
 import javax.transaction.TransactionSynchronizationRegistry;
 import javax.validation.ValidationException;
 import javax.validation.ValidatorFactory;
+
+import com.sun.xml.internal.fastinfoset.sax.SystemIdResolver;
 import org.apache.geronimo.connector.GeronimoBootstrapContext;
 import org.apache.geronimo.connector.work.GeronimoWorkManager;
 import org.apache.geronimo.connector.work.HintsContextHandler;
@@ -122,6 +124,7 @@ import org.apache.openejb.monitoring.Dyn
 import org.apache.openejb.assembler.monitoring.JMXContainer;
 import org.apache.openejb.monitoring.LocalMBeanServer;
 import org.apache.openejb.monitoring.ObjectNameBuilder;
+import org.apache.openejb.observer.ObserverManager;
 import org.apache.openejb.persistence.JtaEntityManagerRegistry;
 import org.apache.openejb.persistence.PersistenceClassLoaderHandler;
 import org.apache.openejb.resource.GeronimoConnectionManagerFactory;
@@ -136,7 +139,6 @@ import org.apache.openejb.util.Messages;
 import org.apache.openejb.util.OpenEJBErrorHandler;
 import org.apache.openejb.util.References;
 import org.apache.openejb.util.SafeToolkit;
-import org.apache.openejb.util.UpdateChecker;
 import org.apache.openejb.util.proxy.ProxyFactory;
 import org.apache.openejb.util.proxy.ProxyManager;
 import org.apache.webbeans.config.WebBeansContext;
@@ -163,10 +165,6 @@ public class Assembler extends Assembler
 
     private static final String GLOBAL_UNIQUE_ID = "global";
 
-    private static final Map<String, String> OBSERVERS_ALIASES = new HashMap<String, String>() {{
-        put("update-checker", UpdateChecker.class.getName());
-    }};
-
     Messages messages = new Messages(Assembler.class.getPackage().getName());
 
     private final CoreContainerSystem containerSystem;
@@ -264,11 +262,30 @@ public class Assembler extends Assembler
 
         system.setComponent(EjbResolver.class, new EjbResolver(null, EjbResolver.Scope.GLOBAL));
 
-        loadAvailableObservers();
+        installExtensions();
 
         system.fireEvent(new AssemblerCreated());
     }
 
+    private void installExtensions() {
+
+        final ResourceFinder finder = new ResourceFinder("META-INF");
+
+        try {
+            final List<Class<?>> classes = finder.findAvailableClasses("org.apache.openejb.extension");
+            for (Class<?> clazz : classes) {
+                try {
+                    final Object object = clazz.newInstance();
+                    SystemInstance.get().addObserver(object);
+                } catch (Throwable t) {
+                    logger.error("Extension construction failed" + clazz.getName(), t);
+                }
+            }
+        } catch (IOException e) {
+            logger.error("Extension scanning of 'META-INF/org.apache.openejb.extension' files failed", e);
+        }
+    }
+
     private void setConfiguration(OpenEjbConfiguration config) {
         this.config = config;
         if (config.containerSystem == null) {
@@ -336,9 +353,6 @@ public class Assembler extends Assembler
         setContext(new HashMap<String, Object>());
         try {
             OpenEjbConfiguration config = getOpenEjbConfiguration();
-            addObserversFromConfig(config);
-            SystemInstance.get().fireEvent(new ConfigurationLoaded());
-
             buildContainerSystem(config);
         } catch (OpenEJBException ae) {
             /* OpenEJBExceptions contain useful information and are debbugable.
@@ -358,46 +372,6 @@ public class Assembler extends Assembler
         }
     }
 
-    private void loadAvailableObservers() {
-        final ResourceFinder finder = new ResourceFinder("META-INF");
-        try {
-            final Map<String, String> observers = finder.mapAvailableStrings("org.apache.openejb.observer");
-            final ClassLoader cl = Thread.currentThread().getContextClassLoader();
-            for (Entry<String, String> entry : observers.entrySet()) {
-                final String alias = entry.getKey();
-                if (!SystemInstance.get().hasObserver(alias)) {
-                    addObserver(cl, alias, entry.getValue());
-                }
-            }
-        } catch (IOException e) {
-            logger.error("can't scan for observer in META-INF/", e);
-        }
-    }
-
-    private void addObserver(final ClassLoader cl, final String alias, final String name) {
-        String observer = name;
-        if (OBSERVERS_ALIASES.containsKey(observer)) {
-            observer = OBSERVERS_ALIASES.get(observer);
-        }
-
-        final Object instance;
-        try {
-            instance = cl.loadClass(observer).newInstance();
-        } catch (Exception e) {
-            logger.error("can't add observer " + observer);
-            return;
-        }
-
-        SystemInstance.get().addObserver(alias, instance);
-    }
-
-    private void addObserversFromConfig(final OpenEjbConfiguration config) {
-        final ClassLoader cl = Thread.currentThread().getContextClassLoader();
-        for (String rawObserver : config.facilities.serverObservers) {
-            addObserver(cl, rawObserver, rawObserver); // no real alias when found here === "forced by user"
-        }
-    }
-
     protected OpenEjbConfiguration getOpenEjbConfiguration() throws OpenEJBException {
         OpenEjbConfiguration config = configFactory.getOpenEjbConfiguration();
         return config;
@@ -439,6 +413,10 @@ public class Assembler extends Assembler
      */
     public void buildContainerSystem(final OpenEjbConfiguration configInfo) throws Exception {
 
+        for (ServiceInfo serviceInfo : configInfo.facilities.services) {
+            createService(serviceInfo);
+        }
+
         ContainerSystemInfo containerSystemInfo = configInfo.containerSystem;
 
         if (configInfo.facilities.intraVmServer != null) {
@@ -1539,6 +1517,26 @@ public class Assembler extends Assembler
         }
     }
 
+    public void createService(ServiceInfo serviceInfo) throws OpenEJBException {
+        ObjectRecipe serviceRecipe = createRecipe(serviceInfo);
+
+        Object service = serviceRecipe.create();
+
+        Class serviceClass = service.getClass();
+
+        logUnusedProperties(serviceRecipe, serviceInfo);
+
+        getContext().put(serviceClass.getName(), service);
+
+        props.put(serviceClass.getName(), service);
+        props.put(serviceInfo.service, service);
+        props.put(serviceInfo.id, service);
+
+        config.facilities.services.add(serviceInfo);
+
+        logger.getChildLogger("service").debug("createService.success", serviceInfo.service, serviceInfo.id, serviceInfo.className);
+    }
+
     public void createProxyFactory(ProxyFactoryInfo serviceInfo) throws OpenEJBException {
 
         ObjectRecipe serviceRecipe = createRecipe(serviceInfo);

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=1352450&r1=1352449&r2=1352450&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java Thu Jun 21 08:35:11 2012
@@ -76,7 +76,7 @@ import org.apache.openejb.config.sys.Ope
 import org.apache.openejb.config.sys.ProxyFactory;
 import org.apache.openejb.config.sys.Resource;
 import org.apache.openejb.config.sys.SecurityService;
-import org.apache.openejb.config.sys.ServerObservers;
+import org.apache.openejb.config.sys.Service;
 import org.apache.openejb.config.sys.ServiceProvider;
 import org.apache.openejb.config.sys.TransactionManager;
 import org.apache.openejb.jee.Application;
@@ -384,8 +384,9 @@ public class ConfigurationFactory implem
         sys.containerSystem = new ContainerSystemInfo();
         sys.facilities = new FacilitiesInfo();
 
-        for (ServerObservers observer : openejb.getServerObservers()) {
-            sys.facilities.serverObservers.add(observer.getName());
+        for (Service service : openejb.getServices()) {
+            final JndiContextInfo info = configureService(service, JndiContextInfo.class);
+            sys.facilities.services.add(info);
         }
 
         for (final JndiProvider provider : openejb.getJndiProvider()) {
@@ -640,9 +641,6 @@ public class ConfigurationFactory implem
                     }
                     deployments.setClasspath(new URLClassLoader(urls.toArray(new URL[urls.size()])));
                 }
-            } else if (object instanceof ServerObservers) {
-                final ServerObservers hook = (ServerObservers) object;
-                hook.setName(map.remove("name"));
             }
 
             return object;
@@ -787,10 +785,10 @@ public class ConfigurationFactory implem
     }
 
     private static class DefaultService {
-        private final Class<? extends Service> type;
+        private final Class<? extends org.apache.openejb.config.Service> type;
         private final String id;
 
-        public DefaultService(final String id, final Class<? extends Service> type) {
+        public DefaultService(final String id, final Class<? extends org.apache.openejb.config.Service> type) {
             this.id = id;
             this.type = type;
         }
@@ -798,7 +796,7 @@ public class ConfigurationFactory implem
 
     private static final Map<Class<? extends ServiceInfo>, DefaultService> defaultProviders = new HashMap<Class<? extends ServiceInfo>, DefaultService>();
 
-    private static final Map<Class<? extends ServiceInfo>, Class<? extends Service>> types = new HashMap<Class<? extends ServiceInfo>, Class<? extends Service>>();
+    private static final Map<Class<? extends ServiceInfo>, Class<? extends org.apache.openejb.config.Service>> types = new HashMap<Class<? extends ServiceInfo>, Class<? extends org.apache.openejb.config.Service>>();
 
     /**
      * This is the magic that allows people to be really vague in their openejb.xml and not specify
@@ -838,15 +836,15 @@ public class ConfigurationFactory implem
 
 
     public <T extends ServiceInfo> T configureService(final Class<? extends T> type) throws OpenEJBException {
-        return configureService((Service) null, type);
+        return configureService((org.apache.openejb.config.Service) null, type);
     }
 
-    private <T extends ServiceInfo> Service getDefaultService(final Class<? extends T> type) throws OpenEJBException {
+    private <T extends ServiceInfo> org.apache.openejb.config.Service getDefaultService(final Class<? extends T> type) throws OpenEJBException {
         final DefaultService defaultService = defaultProviders.get(type);
 
         if (defaultService == null) return null;
 
-        final Service service;
+        final org.apache.openejb.config.Service service;
         try {
             service = JaxbOpenejb.create(defaultService.type);
             service.setType(defaultService.id);
@@ -872,7 +870,7 @@ public class ConfigurationFactory implem
      * @return ServiceInfo
      * @throws OpenEJBException On error
      */
-    public <T extends ServiceInfo> T configureService(Service service, final Class<? extends T> infoType) throws OpenEJBException {
+    public <T extends ServiceInfo> T configureService(org.apache.openejb.config.Service service, final Class<? extends T> infoType) throws OpenEJBException {
         try {
             if (infoType == null) throw new NullPointerException("type");
 
@@ -1017,7 +1015,7 @@ public class ConfigurationFactory implem
 
 
     @SuppressWarnings({"unchecked"})
-    private ServiceProvider resolveServiceProvider(final Service service, final Class infoType) throws OpenEJBException {
+    private ServiceProvider resolveServiceProvider(final org.apache.openejb.config.Service service, final Class infoType) throws OpenEJBException {
 
         if (service.getProvider() != null) {
             return ServiceUtils.getServiceProvider(service.getProvider());
@@ -1036,7 +1034,7 @@ public class ConfigurationFactory implem
         }
 
         if (infoType != null) {
-            final Service defaultService = getDefaultService(infoType);
+            final org.apache.openejb.config.Service defaultService = getDefaultService(infoType);
             if (defaultService != null) {
                 return resolveServiceProvider(defaultService, null);
             }
@@ -1070,9 +1068,9 @@ public class ConfigurationFactory implem
     public <T extends ServiceInfo> T configureService(final Class<? extends T> type, final String serviceId, final Properties declaredProperties, final String providerId, final String serviceType) throws OpenEJBException {
         if (type == null) throw new NullPointerException("type is null");
 
-        final Class<? extends Service> serviceClass = types.get(type);
+        final Class<? extends org.apache.openejb.config.Service> serviceClass = types.get(type);
         if (serviceClass == null) throw new OpenEJBException("Unsupported service info type: " + type.getName());
-        final Service service;
+        final org.apache.openejb.config.Service service;
         try {
             service = serviceClass.newInstance();
         } catch (Exception e) {

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java?rev=1352450&r1=1352449&r2=1352450&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java Thu Jun 21 08:35:11 2012
@@ -20,7 +20,6 @@ import org.apache.openejb.OpenEJBExcepti
 import org.apache.openejb.config.ConfigUtils;
 import org.apache.openejb.jee.JAXBContextFactory;
 import org.apache.openejb.loader.IO;
-import org.apache.openejb.loader.SystemInstance;
 import org.apache.xbean.finder.ResourceFinder;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
@@ -122,7 +121,7 @@ public abstract class JaxbOpenejb {
         } else if (type.equals("TransactionManager")) {
             return (T) createTransactionManager();
         } else if (type.equals("ServerObservers")) {
-            return (T) createServerObservers();
+            return (T) createService();
         }
         throw new IllegalArgumentException("Unknown type " + type);
     }
@@ -380,8 +379,8 @@ public abstract class JaxbOpenejb {
         return new Deployments();
     }
 
-    public static ServerObservers createServerObservers() {
-        return new ServerObservers();
+    public static Service createService() {
+        return new Service();
     }
 
     public static JndiProvider createJndiProvider() {

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Openejb.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Openejb.java?rev=1352450&r1=1352449&r2=1352450&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Openejb.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Openejb.java Thu Jun 21 08:35:11 2012
@@ -73,8 +73,8 @@ public class Openejb {
     protected List<Resource> resource;
     @XmlElement(name = "Deployments")
     protected List<Deployments> deployments;
-    @XmlElement(name = "ServerObservers")
-    protected List<ServerObservers> serverObservers;
+    @XmlElement(name = "Service")
+    protected List<Service> services;
 
     /**
      * Gets the value of the container property.
@@ -305,11 +305,11 @@ public class Openejb {
         return this.deployments;
     }
 
-    public List<ServerObservers> getServerObservers() {
-        if (serverObservers == null) {
-            serverObservers = new ArrayList<ServerObservers>();
+    public List<Service> getServices() {
+        if (services == null) {
+            services = new ArrayList<Service>();
         }
-        return this.serverObservers;
+        return this.services;
     }
 
     public void add(Object service) {
@@ -331,8 +331,8 @@ public class Openejb {
             setSecurityService((SecurityService) service);
         } else if (service instanceof Deployments) {
             getDeployments().add((Deployments) service);
-        } else if (service instanceof ServerObservers) {
-            getServerObservers().add((ServerObservers) service);
+        } else if (service instanceof Service) {
+            getServices().add((Service) service);
         }
     }
 }

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java?rev=1352450&r1=1352449&r2=1352450&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java Thu Jun 21 08:35:11 2012
@@ -22,7 +22,7 @@ import java.io.FileNotFoundException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
-import org.apache.openejb.config.Service;
+
 import org.apache.openejb.loader.SystemInstance;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
@@ -126,7 +126,7 @@ class SaxOpenejb extends DefaultHandler 
             else if (localName.equals("Connector")) push(new ResourceElement());
             else if (localName.equals("Deployments")) push(new DeploymentsElement());
             else if (localName.equals("Import")) push(new ImportElement());
-            else if (localName.equals("ServerObservers")) push(new ServerObserversElement());
+            else if (localName.equals("ServerObservers")) push(new DeclaredServiceElement());
             else throw new IllegalStateException("Unsupported Element: " + localName);
             get().startElement(uri, localName, qName, attributes);
         }
@@ -159,7 +159,7 @@ class SaxOpenejb extends DefaultHandler 
         }
     }
 
-    private abstract class ServiceElement<S extends Service> extends Content {
+    private abstract class ServiceElement<S extends org.apache.openejb.config.Service> extends Content {
 
         final S service;
 
@@ -289,17 +289,22 @@ class SaxOpenejb extends DefaultHandler 
         }
     }
 
-    private class ServerObserversElement extends DefaultHandler {
-        private final ServerObservers observer = new ServerObservers();
+    public class DeclaredServiceElement extends ServiceElement<Service> {
+
+        public DeclaredServiceElement() {
+            super(new Service());
+        }
 
         @Override
-        public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
-            observer.setName(attributes.getValue("name"));
+        public void startElement(String uri, String localName, String qName, Attributes attributes) {
+            super.startElement(uri, localName, qName, attributes);
+            service.setClazz(attributes.getValue("class"));
         }
 
         @Override
-        public void endElement(String uri, String localName, String qName) throws SAXException {
-            openejb.getServerObservers().add(observer);
+        public void endElement(String uri, String localName, String qName) {
+            openejb.getServices().add(service);
+            super.endElement(uri, localName, qName);
         }
     }
 

Copied: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Service.java (from r1352396, openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServerObservers.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Service.java?p2=openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Service.java&p1=openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServerObservers.java&r1=1352396&r2=1352450&rev=1352450&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServerObservers.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Service.java Thu Jun 21 08:35:11 2012
@@ -25,17 +25,39 @@ import javax.xml.bind.annotation.XmlType
 
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "")
-@XmlRootElement(name = "ServerObservers")
-public class ServerObservers {
+@XmlRootElement(name = "Service")
+public class Service extends AbstractService {
 
-    @XmlAttribute
-    protected String name;
+    @XmlAttribute(name = "class")
+    protected String clazz;
 
-    public String getName() {
-        return name;
+    public Service() {
     }
 
-    public void setName(String name) {
-        this.name = name;
+    public Service(String id, String clazz) {
+        super(id);
+        this.clazz = clazz;
+    }
+
+    public Service(String id, String type, String clazz) {
+        super(id, type);
+        this.clazz = clazz;
+    }
+
+    public Service(String id, String type, String provider, String clazz) {
+        super(id, type, provider);
+        this.clazz = clazz;
+    }
+
+    public Service(String clazz) {
+        this.clazz = clazz;
+    }
+
+    public String getClazz() {
+        return clazz;
+    }
+
+    public void setClazz(String clazz) {
+        this.clazz = clazz;
     }
 }

Modified: openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/HooksTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/HooksTest.java?rev=1352450&r1=1352449&r2=1352450&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/HooksTest.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/HooksTest.java Thu Jun 21 08:35:11 2012
@@ -35,7 +35,7 @@ public class HooksTest {
     @BeforeClass
     public static void init() {
         SystemInstance.get().getProperties().putAll(new Properties() {{
-            setProperty("lifecycle", "new://ServerObservers?name=" + HookLifecycle.class.getName());
+            setProperty("lifecycle", "new://Service?class=" + HookLifecycle.class.getName());
         }});
     }
 

Modified: openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java?rev=1352450&r1=1352449&r2=1352450&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java (original)
+++ openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java Thu Jun 21 08:35:11 2012
@@ -84,22 +84,14 @@ public class SystemInstance {
         observerManager.fireEvent(event);
     }
 
-    public ObserverManager.Observer addObserver(Object observer) {
-        return observerManager.addObserver(observer.getClass().getName(), observer);
+    public boolean addObserver(Object observer) {
+        return observerManager.addObserver(observer);
     }
 
-    public void addObserver(final String alias, final Object instance) {
-        observerManager.addObserver(alias, instance);
-    }
-
-    public ObserverManager.Observer removeObserver(Object observer) {
+    public boolean removeObserver(Object observer) {
         return observerManager.removeObserver(observer);
     }
 
-    public boolean hasObserver(final String value) {
-        return observerManager.hasObserver(value);
-    }
-
     public long getStartTime() {
         return startTime;
     }
@@ -209,9 +201,6 @@ public class SystemInstance {
 
     public static synchronized void reset() {
         try {
-            if (system != null) {
-                system.observerManager.clear();
-            }
             system = new SystemInstance(new Properties()); // don't put system properties here, it is already done
             initialized = false;
         } catch (Exception e) {
@@ -270,4 +259,5 @@ public class SystemInstance {
     public boolean hasProperty(final String propName) {
         return this.internalProperties.get(propName) != null;
     }
+
 }

Modified: openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/observer/ObserverManager.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/observer/ObserverManager.java?rev=1352450&r1=1352449&r2=1352450&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/observer/ObserverManager.java (original)
+++ openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/observer/ObserverManager.java Thu Jun 21 08:35:11 2012
@@ -31,32 +31,32 @@ import java.util.Map;
 
 public class ObserverManager {
 
-    private final Map<String, Observer> observers = new HashMap<String, Observer>();
+    private final List<Observer> observers = new ArrayList<Observer>();
 
-    public Observer addObserver(String alias, Object observer) {
+    public boolean addObserver(Object observer) {
         if (observer == null) throw new IllegalArgumentException("observer cannot be null");
 
-        final Observer put = observers.put(alias, new Observer(observer));
+        final boolean added = observers.add(new Observer(observer));
 
         // Observers can observe they have been added and are active
         fireEvent(new ObserverAdded(observer));
 
-        return put;
+        return added;
     }
 
-    public Observer removeObserver(Object observer) {
+    public boolean removeObserver(Object observer) {
         if (observer == null) throw new IllegalArgumentException("observer cannot be null");
 
         // Observers can observe they are to be removed
         fireEvent(new ObserverRemoved(observer));
 
-        return observers.remove(observer.getClass().getName());
+        return observers.remove(new Observer(observer));
     }
 
     public void fireEvent(Object event) {
         if (event == null) throw new IllegalArgumentException("event cannot be null");
 
-        for (Observer observer : observers.values()) {
+        for (Observer observer : observers) {
             try {
                 observer.invoke(event);
             } catch (Throwable t) {
@@ -67,14 +67,6 @@ public class ObserverManager {
         }
     }
 
-    public boolean hasObserver(final String value) {
-        return observers.containsKey(value);
-    }
-
-    public void clear() {
-        observers.clear();
-    }
-
     /**
      * @version $Rev$ $Date$
      */