Author: rmannibucau
Date: Wed Jan  9 13:51:22 2013
New Revision: 1430860

URL: http://svn.apache.org/viewvc?rev=1430860&view=rev
Log:
TOMEE-716 force reloadable feature + setting it up in tomee maven plugin

Modified:
    
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
    
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java
    
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java

Modified: 
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java?rev=1430860&r1=1430859&r2=1430860&view=diff
==============================================================================
--- 
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
 (original)
+++ 
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
 Wed Jan  9 13:51:22 2013
@@ -166,6 +166,9 @@ public abstract class AbstractTomEEMojo 
     @Parameter(property = "tomee-plugin.quick-session", defaultValue = "true")
     private boolean quickSession;
 
+    @Parameter(property = "tomee-plugin.force-reloadable", defaultValue = 
"false")
+    protected boolean forceReloadable;
+
     /**
      * supported formats:
      * --> groupId:artifactId:version...
@@ -554,6 +557,10 @@ public abstract class AbstractTomEEMojo 
             strings.addAll(Arrays.asList(args.split(" ")));
         }
 
+        if (forceReloadable) {
+            strings.add("-Dtomee.force-reloadable=true");
+        }
+
         // init env for RemoteServer
         System.setProperty("openejb.home", catalinaBase.getAbsolutePath());
         if (debug) {

Modified: 
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java?rev=1430860&r1=1430859&r2=1430860&view=diff
==============================================================================
--- 
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java
 (original)
+++ 
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java
 Wed Jan  9 13:51:22 2013
@@ -63,10 +63,10 @@ public abstract class UpdatableTomEEMojo
     private boolean reloadOnUpdate;
 
     private Timer timer;
+    private SynchronizerRedeployer task;
 
     @Override
     protected void run() {
-        int sync = 0;
         if (synchronization != null) {
             initSynchronization(synchronization);
         }
@@ -76,7 +76,9 @@ public abstract class UpdatableTomEEMojo
             }
         }
 
-        startSynchronizers();
+        if (startSynchronizers()) {
+            forceReloadable = true;
+        }
 
         super.run();
     }
@@ -108,10 +110,11 @@ public abstract class UpdatableTomEEMojo
 
     @Override
     protected void addShutdownHooks(final RemoteServer server) {
-        if (synchronization != null) {
+        if (synchronization != null || synchronizations != null) {
             Runtime.getRuntime().addShutdownHook(new Thread() {
                 @Override
                 public void run() {
+                    task.cancel();
                     timer.cancel();
                 }
             });
@@ -119,7 +122,7 @@ public abstract class UpdatableTomEEMojo
         super.addShutdownHooks(server);
     }
 
-    protected void startSynchronizers() {
+    protected boolean startSynchronizers() {
         timer = new Timer("tomee-maven-plugin-synchronizer");
 
         final Collection<Synchronizer> synchronizers = new 
ArrayList<Synchronizer>();
@@ -143,14 +146,16 @@ public abstract class UpdatableTomEEMojo
 
         // serialazing synchronizers to avoid multiple updates at the same 
time and reload a single time the app
         if (!synchronizers.isEmpty()) {
-            final SynchronizerRedeployer task = new 
SynchronizerRedeployer(synchronizers);
+            task = new SynchronizerRedeployer(synchronizers);
             getLog().info("Starting synchronizer with an update interval of " 
+ interval);
             if (interval > INITIAL_DELAY) {
                 timer.scheduleAtFixedRate(task, interval, interval);
             } else {
                 timer.scheduleAtFixedRate(task, INITIAL_DELAY, interval);
             }
+            return true;
         }
+        return false;
     }
 
     private class SynchronizerRedeployer extends TimerTask {

Modified: 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1430860&r1=1430859&r2=1430860&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 Wed Jan  9 13:51:22 2013
@@ -175,6 +175,8 @@ public class TomcatWebAppBuilder impleme
     public static final String TOMEE_EAT_EXCEPTION_PROP = 
"tomee.eat-exception";
     public static final String TOMEE_INIT_J2EE_INFO = "tomee.init-J2EE-info";
 
+    private static final boolean FORCE_RELOADABLE = 
SystemInstance.get().getOptions().get("tomee.force-reloadable", false);
+
     /**
      * Context information for web applications
      */
@@ -698,6 +700,10 @@ public class TomcatWebAppBuilder impleme
         // just adding a carriage return to get logs more readable
         logger.info("-------------------------\nTomcatWebAppBuilder.init " + 
finalName(standardContext.getPath()));
 
+        if (FORCE_RELOADABLE) {
+            standardContext.setReloadable(true);
+        }
+
         final String name = standardContext.getName();
 
         initJ2EEInfo(standardContext);


Reply via email to