Author: kfujino Date: Wed Mar 28 02:51:21 2012 New Revision: 1306130 URL: http://svn.apache.org/viewvc?rev=1306130&view=rev Log: Add support for multi-thread deployment in UserConfig.
Modified: tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties tomcat/trunk/java/org/apache/catalina/startup/UserConfig.java Modified: tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties?rev=1306130&r1=1306129&r2=1306130&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties Wed Mar 28 02:51:21 2012 @@ -121,6 +121,7 @@ userConfig.deploying=Deploying user web userConfig.error=Error deploying web application for user {0} userConfig.start=UserConfig: Processing START userConfig.stop=UserConfig: Processing STOP +userConfig.deploy.threaded.error=Error waiting for multi-thread deployment of user directories to complete webRuleSet.absoluteOrdering=<absolute-ordering> element not valid in web-fragment.xml and will be ignored webRuleSet.absoluteOrderingCount=<absolute-ordering> element is limited to 1 occurrence webRuleSet.nameCount=<name> element is limited to 1 occurrence Modified: tomcat/trunk/java/org/apache/catalina/startup/UserConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/UserConfig.java?rev=1306130&r1=1306129&r2=1306130&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/UserConfig.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/UserConfig.java Wed Mar 28 02:51:21 2012 @@ -20,7 +20,11 @@ package org.apache.catalina.startup; import java.io.File; +import java.util.ArrayList; import java.util.Enumeration; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Future; import org.apache.catalina.Context; import org.apache.catalina.Host; @@ -258,14 +262,24 @@ public final class UserConfig return; } + ExecutorService executor = host.getStartStopExecutor(); + List<Future<?>> results = new ArrayList<Future<?>>(); + // Deploy the web application (if any) for each defined user Enumeration<String> users = database.getUsers(); while (users.hasMoreElements()) { String user = users.nextElement(); String home = database.getHome(user); - deploy(user, home); + results.add(executor.submit(new DeployUserDirectory(this, user, home))); } + for (Future<?> result : results) { + try { + result.get(); + } catch (Exception e) { + host.getLogger().error(sm.getString("userConfig.deploy.threaded.error"), e); + } + } } @@ -334,5 +348,22 @@ public final class UserConfig } + private static class DeployUserDirectory implements Runnable { + + private UserConfig config; + private String user; + private String home; + + public DeployUserDirectory(UserConfig config, String user, String home) { + this.config = config; + this.user = user; + this.home= home; + } + + @Override + public void run() { + config.deploy(user, home); + } + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org