remm 2003/06/10 13:01:31
Modified: catalina/src/share/org/apache/catalina/startup
HostConfig.java
Log:
- Small deployer refactorings, as discussed previsouly.
- Track WARs for changes when unpacking WARs. If WAR gets updated,
redeploy webapp.
Revision Changes Path
1.11 +53 -10
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.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- HostConfig.java 22 May 2003 23:05:36 -0000 1.10
+++ HostConfig.java 10 Jun 2003 20:01:31 -0000 1.11
@@ -188,6 +188,12 @@
/**
+ * Last modified dates of the source WAR files, keyed by WAR name.
+ */
+ private HashMap warLastModified = new HashMap();
+
+
+ /**
* Attribute value used to turn on/off XML validation
*/
private boolean xmlValidation = false;
@@ -689,16 +695,50 @@
}
+ // Check for WAR modification
+ if (isUnpackWARs()) {
+ File appBase = appBase();
+ if (!appBase.exists() || !appBase.isDirectory())
+ return;
+ String files[] = appBase.list();
+
+ for (int i = 0; i < files.length; i++) {
+ if (files[i].endsWith(".war")) {
+ File dir = new File(appBase, files[i]);
+ Long lastModified = (Long) warLastModified.get(files[i]);
+ if (lastModified == null) {
+ warLastModified.put
+ (files[i], new Long(dir.lastModified()));
+ } else if (dir.lastModified() > lastModified.longValue()) {
+ // The WAR has been modified: redeploy
+ String expandedDir = files[i];
+ int period = expandedDir.lastIndexOf(".");
+ if (period >= 0)
+ expandedDir = expandedDir.substring(0, period);
+ String contextPath = "/" + expandedDir;
+ if (contextPath.equals("/ROOT"))
+ contextPath = "";
+ try {
+ ((Deployer) host).remove(contextPath, true);
+ deployed.remove(files[i]);
+ } catch (Throwable t) {
+ log.error(sm.getString("hostConfig.undeployJar.error",
+ files[i]), t);
+ }
+ webXmlLastModified.remove(contextPath);
+ warLastModified.put
+ (files[i], new Long(dir.lastModified()));
+ deployApps();
+ }
+ }
+ }
+ }
+
}
protected boolean restartContext(Context context) {
boolean result = true;
- if( context.getReloadable() == false ) {
- log.info("restartContext(" + context.getName() + "): not reloadable");
- return false;
- }
-
log.info("restartContext(" + context.getName() + ")");
/*
@@ -853,13 +893,16 @@
}
}
+ webXmlLastModified.clear();
+ deployed.clear();
+
}
/**
* Deploy webapps.
*/
- public void check() {
+ protected void check() {
if (host.getAutoDeploy()) {
// Deploy apps if the Host allows auto deploying
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]