Author: remm Date: Wed Oct 26 16:25:26 2016 New Revision: 1766698 URL: http://svn.apache.org/viewvc?rev=1766698&view=rev Log: Similar to the connector handling, refactor the embedded mode container handling to more cleanly allow multiples of each (if needed). Remove relevant todos.
Modified: tomcat/trunk/java/org/apache/catalina/startup/Tomcat.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/catalina/startup/Tomcat.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/Tomcat.java?rev=1766698&r1=1766697&r2=1766698&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/Tomcat.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/Tomcat.java Wed Oct 26 16:25:26 2016 @@ -133,20 +133,7 @@ public class Tomcat { // so that configuration is not lost. private final Map<String, Logger> pinnedLoggers = new HashMap<>(); - // Single engine, service, server, connector - few cases need more, - // they can use server.xml protected Server server; - protected Service service; - protected Engine engine; - - // To make it a bit easier to config for the common case - // ( one host, one context ). - protected Host host; - - // TODO: it's easy to add support for more hosts - but is it - // really needed ? - - // TODO: allow use of in-memory connector protected int port = 8080; protected String hostname = "localhost"; @@ -450,8 +437,7 @@ public class Tomcat { * @return The service */ public Service getService() { - getServer(); - return service; + return (Service) getServer().findServices()[0]; } /** @@ -462,16 +448,27 @@ public class Tomcat { * @param host The current host */ public void setHost(Host host) { - this.host = host; + Engine engine = getEngine(); + boolean found = false; + for (Container engineHost : engine.findChildren()) { + if (engineHost == host) { + found = true; + } + } + if (!found) { + engine.addChild(host); + } } public Host getHost() { - if (host == null) { - host = new StandardHost(); - host.setName(hostname); - - getEngine().addChild( host ); + Engine engine = getEngine(); + if (engine.findChildren().length > 0) { + return (Host) engine.findChildren()[0]; } + + Host host = new StandardHost(); + host.setName(hostname); + getEngine().addChild(host); return host; } @@ -480,14 +477,15 @@ public class Tomcat { * @return The engine */ public Engine getEngine() { - if(engine == null ) { - getServer(); - engine = new StandardEngine(); - engine.setName( "Tomcat" ); - engine.setDefaultHost(hostname); - engine.setRealm(createDefaultRealm()); - service.setContainer(engine); + Service service = (Service) getServer().findServices()[0]; + if (service.getContainer() != null) { + return (Engine) service.getContainer(); } + Engine engine = new StandardEngine(); + engine.setName( "Tomcat" ); + engine.setDefaultHost(hostname); + engine.setRealm(createDefaultRealm()); + service.setContainer(engine); return engine; } @@ -510,9 +508,9 @@ public class Tomcat { server.setPort( -1 ); - service = new StandardService(); + Service service = new StandardService(); service.setName("Tomcat"); - server.addService( service ); + server.addService(service); return server; } Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1766698&r1=1766697&r2=1766698&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Wed Oct 26 16:25:26 2016 @@ -83,6 +83,10 @@ <fix> <bug>60297</bug>: Simplify connector creation in embedded mode. (remm) </fix> + <fix> + Refactor creation of containers in embedded mode for more consistency + and flexibility. (remm) + </fix> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org