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 2014/03/22 01:49:45 UTC

svn commit: r1580105 - in /tomee/tomee/trunk: container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/ server/openejb-hessian/src/main/java/org/apache/op...

Author: dblevins
Date: Sat Mar 22 00:49:44 2014
New Revision: 1580105

URL: http://svn.apache.org/r1580105
Log:
OPENEJB-2084 - Move Server Services to a dedicated "Start" event

Added:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/StartApplicationContext.java   (with props)
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/StopApplicationContext.java   (with props)
Modified:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    tomee/tomee/trunk/server/openejb-hessian/src/main/java/org/apache/openejb/server/hessian/HessianService.java
    tomee/tomee/trunk/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
    tomee/tomee/trunk/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/ClusterObserver.java

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1580105&r1=1580104&r2=1580105&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Sat Mar 22 00:49:44 2014
@@ -45,6 +45,8 @@ import org.apache.openejb.assembler.clas
 import org.apache.openejb.assembler.classic.event.AssemblerDestroyed;
 import org.apache.openejb.assembler.classic.event.ContainerSystemPostCreate;
 import org.apache.openejb.assembler.classic.event.ContainerSystemPreDestroy;
+import org.apache.openejb.assembler.classic.event.StartApplicationContext;
+import org.apache.openejb.assembler.classic.event.StopApplicationContext;
 import org.apache.openejb.assembler.monitoring.JMXContainer;
 import org.apache.openejb.async.AsynchronousPool;
 import org.apache.openejb.cdi.CdiAppContextsService;
@@ -886,6 +888,8 @@ public class Assembler extends Assembler
             deployedApplications.put(appInfo.path, appInfo);
             resumePersistentSchedulers(appContext);
 
+            systemInstance.fireEvent(new StartApplicationContext(appInfo, appContext));
+
             logger.info("createApplication.success", appInfo.path);
             systemInstance.fireEvent(new AssemblerAfterApplicationCreated(appInfo, allDeployments));
 
@@ -1524,6 +1528,8 @@ public class Assembler extends Assembler
             final AppContext appContext = containerSystem.getAppContext(appInfo.appId);
             final ClassLoader classLoader = appContext.getClassLoader();
 
+            SystemInstance.get().fireEvent(new StopApplicationContext(appInfo, appContext));
+
             if (null == appContext) {
                 logger.warning("Application id '" + appInfo.appId + "' not found in: " + Arrays.toString(containerSystem.getAppContextKeys()));
                 return;

Added: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/StartApplicationContext.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/StartApplicationContext.java?rev=1580105&view=auto
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/StartApplicationContext.java (added)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/StartApplicationContext.java Sat Mar 22 00:49:44 2014
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openejb.assembler.classic.event;
+
+import org.apache.openejb.AppContext;
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.observer.Event;
+
+@Event
+public class StartApplicationContext {
+
+    private final AppInfo applicationInfo;
+    private final AppContext applicationContext;
+
+    public StartApplicationContext(final AppInfo applicationInfo, final AppContext applicationContext) {
+        this.applicationInfo = applicationInfo;
+        this.applicationContext = applicationContext;
+    }
+
+    public AppInfo getApplicationInfo() {
+        return applicationInfo;
+    }
+
+    public AppContext getApplicationContext() {
+        return applicationContext;
+    }
+}

Propchange: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/StartApplicationContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/StopApplicationContext.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/StopApplicationContext.java?rev=1580105&view=auto
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/StopApplicationContext.java (added)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/StopApplicationContext.java Sat Mar 22 00:49:44 2014
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openejb.assembler.classic.event;
+
+import org.apache.openejb.AppContext;
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.observer.Event;
+
+@Event
+public class StopApplicationContext {
+
+    private final AppInfo applicationInfo;
+    private final AppContext applicationContext;
+
+    public StopApplicationContext(final AppInfo applicationInfo, final AppContext applicationContext) {
+        this.applicationInfo = applicationInfo;
+        this.applicationContext = applicationContext;
+    }
+
+    public AppInfo getApplicationInfo() {
+        return applicationInfo;
+    }
+
+    public AppContext getApplicationContext() {
+        return applicationContext;
+    }
+}

Propchange: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/StopApplicationContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: tomee/tomee/trunk/server/openejb-hessian/src/main/java/org/apache/openejb/server/hessian/HessianService.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-hessian/src/main/java/org/apache/openejb/server/hessian/HessianService.java?rev=1580105&r1=1580104&r2=1580105&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-hessian/src/main/java/org/apache/openejb/server/hessian/HessianService.java (original)
+++ tomee/tomee/trunk/server/openejb-hessian/src/main/java/org/apache/openejb/server/hessian/HessianService.java Sat Mar 22 00:49:44 2014
@@ -22,9 +22,9 @@ import org.apache.openejb.assembler.clas
 import org.apache.openejb.assembler.classic.Assembler;
 import org.apache.openejb.assembler.classic.EjbJarInfo;
 import org.apache.openejb.assembler.classic.EnterpriseBeanInfo;
-import org.apache.openejb.assembler.classic.event.AssemblerAfterApplicationCreated;
-import org.apache.openejb.assembler.classic.event.AssemblerBeforeApplicationDestroyed;
+import org.apache.openejb.assembler.classic.event.StartApplicationContext;
 import org.apache.openejb.assembler.classic.event.NewEjbAvailableAfterApplicationCreated;
+import org.apache.openejb.assembler.classic.event.StopApplicationContext;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.observer.Observes;
 import org.apache.openejb.server.SelfManaging;
@@ -114,7 +114,7 @@ public class HessianService implements S
         final Assembler assembler = SystemInstance.get().getComponent(Assembler.class);
         if (assembler != null) {
             for (final AppInfo appInfo : assembler.getDeployedApplications()) {
-                afterApplicationCreated(new AssemblerAfterApplicationCreated(appInfo, SystemInstance.get().getComponent(ContainerSystem.class).getAppContext(appInfo.appId).getBeanContexts()));
+                afterApplicationCreated(new StartApplicationContext(appInfo, SystemInstance.get().getComponent(ContainerSystem.class).getAppContext(appInfo.appId)));
             }
         }
     }
@@ -160,24 +160,24 @@ public class HessianService implements S
         deploy(event.getApp(), event.getBeanContexts());
     }
 
-    public void afterApplicationCreated(final @Observes AssemblerAfterApplicationCreated event) {
-        final AppInfo appInfo = event.getApp();
-        deploy(appInfo, event.getDeployedEjbs());
+    public void afterApplicationCreated(final @Observes StartApplicationContext event) {
+        final AppInfo appInfo = event.getApplicationInfo();
+        deploy(appInfo, event.getApplicationContext().getBeanContexts());
     }
 
-    public void beforeApplicationDestroyed(@Observes final AssemblerBeforeApplicationDestroyed event) {
+    public void beforeApplicationDestroyed(@Observes final StopApplicationContext event) {
         if (disabled) {
             return;
         }
 
-        for (final BeanContext beanContext : SystemInstance.get().getComponent(ContainerSystem.class).getAppContext(event.getApp().appId).getBeanContexts()) {
+        for (final BeanContext beanContext : event.getApplicationContext().getBeanContexts()) {
             final Class<?> remoteItf = beanContext.getBusinessRemoteInterface();
             if (remoteItf == null) {
                 continue;
             }
 
             final String name = String.class.cast(beanContext.getDeploymentID());
-            registry.undeploy(virtualHost, appName(event.getApp(), beanContext), name);
+            registry.undeploy(virtualHost, appName(event.getApplicationInfo(), beanContext), name);
             LOGGER.info("Undeployed hessian service " + name);
         }
     }

Modified: tomee/tomee/trunk/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java?rev=1580105&r1=1580104&r2=1580105&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java (original)
+++ tomee/tomee/trunk/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java Sat Mar 22 00:49:44 2014
@@ -29,8 +29,8 @@ import org.apache.openejb.assembler.clas
 import org.apache.openejb.assembler.classic.ServiceInfo;
 import org.apache.openejb.assembler.classic.ServletInfo;
 import org.apache.openejb.assembler.classic.WebAppInfo;
-import org.apache.openejb.assembler.classic.event.AssemblerAfterApplicationCreated;
-import org.apache.openejb.assembler.classic.event.AssemblerBeforeApplicationDestroyed;
+import org.apache.openejb.assembler.classic.event.StartApplicationContext;
+import org.apache.openejb.assembler.classic.event.StopApplicationContext;
 import org.apache.openejb.assembler.classic.util.PojoUtil;
 import org.apache.openejb.assembler.classic.util.ServiceConfiguration;
 import org.apache.openejb.core.CoreContainerSystem;
@@ -534,11 +534,11 @@ public abstract class RESTService implem
         return additionalProviders;
     }
 
-    public void afterApplicationCreated(@Observes final AssemblerAfterApplicationCreated event) {
+    public void afterApplicationCreated(@Observes final StartApplicationContext event) {
         if (!enabled)
             return;
 
-        final AppInfo appInfo = event.getApp();
+        final AppInfo appInfo = event.getApplicationInfo();
         if ("false".equalsIgnoreCase(appInfo.properties.getProperty("openejb.jaxrs.on", "true"))) {
             return;
         }
@@ -884,8 +884,8 @@ public abstract class RESTService implem
         return cl;
     }
 
-    public void beforeApplicationDestroyed(@Observes final AssemblerBeforeApplicationDestroyed event) {
-        final AppInfo app = event.getApp();
+    public void beforeApplicationDestroyed(@Observes final StopApplicationContext event) {
+        final AppInfo app = event.getApplicationInfo();
         if (deployedApplications.contains(app)) {
             for (final WebAppInfo webApp : app.webApps) {
                 final List<DeployedService> toRemove = new ArrayList<DeployedService>();
@@ -912,7 +912,7 @@ public abstract class RESTService implem
         if (assembler != null) {
             SystemInstance.get().addObserver(this);
             for (final AppInfo appInfo : assembler.getDeployedApplications()) {
-                afterApplicationCreated(new AssemblerAfterApplicationCreated(appInfo, null));
+                afterApplicationCreated(new StartApplicationContext(appInfo, null));
             }
         }
     }
@@ -929,7 +929,7 @@ public abstract class RESTService implem
         if (assembler != null) {
             SystemInstance.get().removeObserver(this);
             for (final AppInfo appInfo : new ArrayList<AppInfo>(deployedApplications)) {
-                beforeApplicationDestroyed(new AssemblerBeforeApplicationDestroyed(appInfo));
+                beforeApplicationDestroyed(new StopApplicationContext(appInfo, null));
             }
         }
 

Modified: tomee/tomee/trunk/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java?rev=1580105&r1=1580104&r2=1580105&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java (original)
+++ tomee/tomee/trunk/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java Sat Mar 22 00:49:44 2014
@@ -30,9 +30,9 @@ import org.apache.openejb.assembler.clas
 import org.apache.openejb.assembler.classic.StatelessBeanInfo;
 import org.apache.openejb.assembler.classic.WebAppInfo;
 import org.apache.openejb.assembler.classic.WsBuilder;
-import org.apache.openejb.assembler.classic.event.AssemblerAfterApplicationCreated;
-import org.apache.openejb.assembler.classic.event.AssemblerBeforeApplicationDestroyed;
 import org.apache.openejb.assembler.classic.event.NewEjbAvailableAfterApplicationCreated;
+import org.apache.openejb.assembler.classic.event.StartApplicationContext;
+import org.apache.openejb.assembler.classic.event.StopApplicationContext;
 import org.apache.openejb.assembler.classic.util.PojoUtil;
 import org.apache.openejb.assembler.classic.util.ServiceConfiguration;
 import org.apache.openejb.core.CoreContainerSystem;
@@ -185,7 +185,7 @@ public abstract class WsService implemen
         if (assembler != null) {
             SystemInstance.get().addObserver(this);
             for (final AppInfo appInfo : assembler.getDeployedApplications()) {
-                afterApplicationCreated(new AssemblerAfterApplicationCreated(appInfo, null));
+                afterApplicationCreated(new StartApplicationContext(appInfo, null));
             }
         }
     }
@@ -195,7 +195,7 @@ public abstract class WsService implemen
         if (assembler != null) {
             SystemInstance.get().removeObserver(this);
             for (final AppInfo appInfo : new ArrayList<AppInfo>(deployedApplications)) {
-                beforeApplicationDestroyed(new AssemblerBeforeApplicationDestroyed(appInfo));
+                beforeApplicationDestroyed(new StopApplicationContext(appInfo, null));
             }
             assembler = null;
             if (SystemInstance.get().getComponent(WsService.class) == this) {
@@ -219,10 +219,10 @@ public abstract class WsService implemen
         deployApp(event.getApp(), event.getBeanContexts());
     }
 
-    public void afterApplicationCreated(final @Observes AssemblerAfterApplicationCreated event) {
-        final AppInfo appInfo = event.getApp();
+    public void afterApplicationCreated(final @Observes StartApplicationContext event) {
+        final AppInfo appInfo = event.getApplicationInfo();
         if (deployedApplications.add(appInfo)) {
-            deployApp(appInfo, event.getDeployedEjbs());
+            deployApp(appInfo, event.getApplicationContext().getBeanContexts());
         }
     }
 
@@ -424,8 +424,8 @@ public abstract class WsService implemen
         }
     }
 
-    public void beforeApplicationDestroyed(@Observes final AssemblerBeforeApplicationDestroyed event) {
-        final AppInfo appInfo = event.getApp();
+    public void beforeApplicationDestroyed(@Observes final StopApplicationContext event) {
+        final AppInfo appInfo = event.getApplicationInfo();
         if (deployedApplications.remove(appInfo)) {
             for (final EjbJarInfo ejbJar : appInfo.ejbJars) {
                 final Map<String, PortInfo> ports = new TreeMap<String, PortInfo>();

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/ClusterObserver.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/ClusterObserver.java?rev=1580105&r1=1580104&r2=1580105&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/ClusterObserver.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/ClusterObserver.java Sat Mar 22 00:49:44 2014
@@ -19,8 +19,8 @@ package org.apache.tomee.catalina.cluste
 import org.apache.catalina.ha.CatalinaCluster;
 import org.apache.catalina.ha.ClusterMessage;
 import org.apache.openejb.assembler.classic.AppInfo;
-import org.apache.openejb.assembler.classic.event.AssemblerAfterApplicationCreated;
-import org.apache.openejb.assembler.classic.event.AssemblerBeforeApplicationDestroyed;
+import org.apache.openejb.assembler.classic.event.StartApplicationContext;
+import org.apache.openejb.assembler.classic.event.StopApplicationContext;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.observer.Observes;
 
@@ -36,21 +36,21 @@ public class ClusterObserver {
         this.clusters = clusters;
     }
 
-    public void deploy(@Observes final AssemblerAfterApplicationCreated app) {
+    public void deploy(@Observes final StartApplicationContext app) {
         if (!ClUSTER_DEPLOYMENT) {
             return;
         }
 
-        final AppInfo appInfo = app.getApp();
+        final AppInfo appInfo = app.getApplicationInfo();
         send(new DeployMessage(appInfo.path), appInfo);
     }
 
-    public void undeploy(@Observes final AssemblerBeforeApplicationDestroyed app) {
+    public void undeploy(@Observes final StopApplicationContext app) {
         if (!ClUSTER_DEPLOYMENT) {
             return;
         }
 
-        final AppInfo appInfo = app.getApp();
+        final AppInfo appInfo = app.getApplicationInfo();
         send(new UndeployMessage(appInfo.path), appInfo);
     }