You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2002/11/29 15:46:02 UTC
cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/startup HostConfig.java
remm 2002/11/29 06:46:02
Modified: catalina/src/share/org/apache/catalina/startup
HostConfig.java
Log:
- Add reloading for the context XML files.
- I plan to port the last two patches to the 4.1 branch. Please let me know
if it's not ok.
Revision Changes Path
1.5 +52 -15 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/startup/HostConfig.java
Index: HostConfig.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/startup/HostConfig.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- HostConfig.java 11 Sep 2002 13:08:19 -0000 1.4
+++ HostConfig.java 29 Nov 2002 14:46:02 -0000 1.5
@@ -202,16 +202,24 @@
*/
private HashMap webXmlLastModified = new HashMap();
+
+ /**
+ * Last modified dates of the Context xml files of the contexts, keyed by
+ * context name.
+ */
+ private HashMap contextXmlLastModified = new HashMap();
+
+
/**
* Attribute value used to turn on/off XML validation
*/
- private boolean xmlValidation = false;
+ private boolean xmlValidation = false;
/**
* Attribute value used to turn on/off XML namespace awarenes.
*/
- private boolean xmlNamespaceAware = false;
+ private boolean xmlNamespaceAware = false;
// ------------------------------------------------------------- Properties
@@ -638,7 +646,7 @@
/**
* Check deployment descriptors last modified date.
*/
- protected void checkWebXmlLastModified() {
+ protected void checkContextLastModified() {
if (!(host instanceof Deployer))
return;
@@ -673,24 +681,53 @@
} else {
if (lastModified.longValue() != newLastModified) {
webXmlLastModified.remove(contextName);
- ((Lifecycle) context).stop();
- // Note: If the context was already stopped, a
- // Lifecycle exception will be thrown, and the context
- // won't be restarted
- ((Lifecycle) context).start();
+ restartContext(context);
}
}
- } catch (LifecycleException e) {
- ; // Ignore
} catch (NamingException e) {
; // Ignore
}
+ Long lastModified = (Long) contextXmlLastModified.get(contextName);
+ String configFileName = context.getConfigFile();
+ if (configFileName != null) {
+ File configFile = new File(configFileName);
+ if (!configFile.isAbsolute()) {
+ configFile = new File(System.getProperty("catalina.base"),
+ configFile.getPath());
+ }
+ long newLastModified = configFile.lastModified();
+ if (lastModified == null) {
+ contextXmlLastModified.put
+ (contextName, new Long(newLastModified));
+ } else {
+ if (lastModified.longValue() != newLastModified) {
+ contextXmlLastModified.remove(contextName);
+ restartContext(context);
+ }
+ }
+ }
+
}
}
+ protected boolean restartContext(Context context) {
+ log.info("restartContext(" + context.getName() + ")");
+ boolean result = true;
+ try {
+ ((Lifecycle) context).stop();
+ // Note: If the context was already stopped, a
+ // Lifecycle exception will be thrown, and the context
+ // won't be restarted
+ ((Lifecycle) context).start();
+ } catch (LifecycleException e) {
+ result = false;
+ }
+ return result;
+ }
+
/**
* Expand the WAR file found at the specified URL into an unpacked
@@ -1063,7 +1100,7 @@
deployApps();
// Check for web.xml modification
- checkWebXmlLastModified();
+ checkContextLastModified();
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>