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);