Author: markt Date: Wed Jan 14 16:09:08 2009 New Revision: 734570 URL: http://svn.apache.org/viewvc?rev=734570&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=42707 Make adding a host alias via jmx take effect immediately
Modified: tomcat/tc6.0.x/trunk/ (props changed) tomcat/tc6.0.x/trunk/STATUS.txt tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/MapperListener.java tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/http/mapper/Mapper.java tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Propchange: tomcat/tc6.0.x/trunk/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Jan 14 16:09:08 2009 @@ -1 +1 @@ -/tomcat/trunk:601180,606992,612607,630314,652744,653247,673796,673820,683982,684001,684081,684234,684269-684270,687503,687645,690781,691392,691805,692748,695053,695311,696780,696782,698012,698227,698236,698613,699427,699634,709294,709811,709816,710063,710066,710125,710205,711126,711600,712461,718360,719602,719626,719628,720046,720069,721040,723404,723738,726052,727303,728032,728768,728947,729057,729567,729569,729809,730250,732859 +/tomcat/trunk:601180,606992,612607,630314,652744,653247,673796,673820,683982,684001,684081,684234,684269-684270,687503,687645,690781,691392,691805,692748,695053,695311,696780,696782,698012,698227,698236,698613,699427,699634,709294,709811,709816,710063,710066,710125,710205,711126,711600,712461,712467,718360,719602,719626,719628,720046,720069,721040,723404,723738,726052,727303,728032,728768,728947,729057,729567,729569,729809,730250,732859 Modified: tomcat/tc6.0.x/trunk/STATUS.txt URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=734570&r1=734569&r2=734570&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/STATUS.txt (original) +++ tomcat/tc6.0.x/trunk/STATUS.txt Wed Jan 14 16:09:08 2009 @@ -157,12 +157,6 @@ +1: markt, fhanik -1: -* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=42707 - Make adding a host alias via jmx take effect immediately - http://svn.apache.org/viewvc?rev=712467&view=rev - +1: markt, fhanik, funkman - -1: - * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=45261 Add a new SimpleCoordinator for tribes provided by Robert Newson http://svn.apache.org/viewvc?rev=729815&view=rev Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/MapperListener.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/MapperListener.java?rev=734570&r1=734569&r2=734570&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/MapperListener.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/MapperListener.java Wed Jan 14 16:09:08 2009 @@ -26,6 +26,10 @@ import javax.management.ObjectInstance; import javax.management.ObjectName; +import org.apache.catalina.ContainerEvent; +import org.apache.catalina.ContainerListener; +import org.apache.catalina.Host; +import org.apache.catalina.ServerFactory; import org.apache.catalina.core.StandardContext; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; @@ -46,8 +50,10 @@ * @author Costin Manolache */ public class MapperListener - implements NotificationListener + implements NotificationListener, ContainerListener { + + private static Log log = LogFactory.getLog(MapperListener.class); @@ -254,6 +260,19 @@ } + // --------------------------------------------- Container Listener methods + + public void containerEvent(ContainerEvent event) { + + if (event.getType() == Host.ADD_ALIAS_EVENT) { + mapper.addHostAlias(((Host) event.getSource()).getName(), + event.getData().toString()); + } else if (event.getType() == Host.REMOVE_ALIAS_EVENT) { + mapper.removeHostAlias(event.getData().toString()); + } + } + + // ------------------------------------------------------ Protected Methods private void registerEngine() @@ -296,7 +315,7 @@ if (!isRegisteredWithAlias && log.isWarnEnabled()) log.warn(sm.getString("mapperListener.unknownDefaultHost", defaultHost)); } - // This should probablt be called later + // This should probably be called later if( defaultHost != null ) { mapper.setDefaultHostName(defaultHost); } @@ -309,13 +328,16 @@ throws Exception { String name=objectName.getKeyProperty("host"); if( name != null ) { - String[] aliases = (String[]) - mBeanServer.invoke(objectName, "findAliases", null, null); + + Host host = (Host) ServerFactory.getServer().findService( + domain).getContainer().findChild(name); + + String[] aliases = host.findAliases(); mapper.addHost(name, aliases, objectName); + host.addContainerListener(this); if(log.isDebugEnabled()) log.debug(sm.getString ("mapperListener.registerHost", name, domain)); - } } @@ -326,10 +348,16 @@ private void unregisterHost(ObjectName objectName) throws Exception { String name=objectName.getKeyProperty("host"); - mapper.removeHost(name); - if(log.isDebugEnabled()) - log.debug(sm.getString - ("mapperListener.unregisterHost", name, domain)); + if( name != null ) { + Host host = (Host) ServerFactory.getServer().findService( + domain).getContainer().findChild(name); + + mapper.removeHost(name); + host.removeContainerListener(this); + if(log.isDebugEnabled()) + log.debug(sm.getString + ("mapperListener.unregisterHost", name, domain)); + } } Modified: tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/http/mapper/Mapper.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/http/mapper/Mapper.java?rev=734570&r1=734569&r2=734570&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/http/mapper/Mapper.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/http/mapper/Mapper.java Wed Jan 14 16:09:08 2009 @@ -136,6 +136,47 @@ } } + /** + * Add an alias to an existing host. + * @param name The name of the host + * @param alias The alias to add + */ + public synchronized void addHostAlias(String name, String alias) { + int pos = find(hosts, name); + if (pos < 0) { + // Should not be adding an alias for a host that doesn't exist but + // just in case... + return; + } + Host realHost = hosts[pos]; + + Host[] newHosts = new Host[hosts.length + 1]; + Host newHost = new Host(); + newHost.name = alias; + newHost.contextList = realHost.contextList; + newHost.object = realHost; + if (insertMap(hosts, newHosts, newHost)) { + hosts = newHosts; + } + } + + /** + * Remove a host alias + * @param alias The alias to remove + */ + public synchronized void removeHostAlias(String alias) { + // Find and remove the alias + int pos = find(hosts, alias); + if (pos < 0) { + return; + } + Host[] newHosts = new Host[hosts.length - 1]; + if (removeMap(hosts, newHosts, alias)) { + hosts = newHosts; + } + + } + public String[] getHosts() { String hostN[] = new String[hosts.length]; for( int i = 0; i < hosts.length; i++ ) { @@ -1025,7 +1066,7 @@ /** - * Find a map elemnt given its name in a sorted array of map elements. + * Find a map element given its name in a sorted array of map elements. * This will return the index for the closest inferior or equal item in the * given array. */ Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=734570&r1=734569&r2=734570&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Wed Jan 14 16:09:08 2009 @@ -85,6 +85,10 @@ Patch provided by Peter Jodeleit. (markt) </fix> <fix> + <bug>42707</bug>: Make adding a host alias via JMX take effect + immediately. (markt) + </fix> + <fix> <bug>43656</bug>: Correct regression in previous fix for this bug. Patch provided by Nils Eckert. (markt) </fix> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org