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: [email protected]
For additional commands, e-mail: [email protected]