Sorry for going on and on with this, but I cannot stop being puzzled by it. It seems like Tomcat only really reloads the one class that you hit first. I do a full recompile (deleting all class files just to be sure!), and look at the tomcat log while clicking reload. These logs are both right after a full recompile, but hitting different servlets first: Here I hit "Initialize" first, and then "design.Topbar" and then "Workbench". 2000-12-07 07:04:38 - ContextManager: Host = endre.devel.coretrek.com 2000-12-07 07:04:38 - ContextManager: SM: Prefix match /itraks/servlet/Initialize -> /servlet/Initialize/* Initialize(Initialize/null) null 2000-12-07 07:04:38 - ContextManager: SimpleMapper1: Adjust for prefix map /servlet/Initialize 2000-12-07 07:04:38 - ContextManager: SimpleMapper1: SM: After mapping R( /itraks + /servlet/Initialize + null) Initialize(Initialize/null) 2000-12-07 07:04:38 - Ctx( /itraks ): Pre servlet destroy Initialize(Initialize/null) 2000-12-07 07:04:39 - Ctx( /itraks ): Post servlet destroy Initialize(Initialize/null) 2000-12-07 07:04:39 - ContextManager: Reloading context Ctx( /itraks ) 2000-12-07 07:04:39 - Ctx( /itraks ): Pre servlet init Initialize(Initialize/null) 2000-12-07 07:04:39 - Ctx( /itraks ): Post servlet init Initialize(Initialize/null) 2000-12-07 07:04:39 - ContextManager: Host = endre.devel.coretrek.com 2000-12-07 07:04:39 - ContextManager: SM: Prefix match /itraks/servlet/design.Topbar -> /servlet/design.Topbar/* design.Topbar(design.Topbar/null) null 2000-12-07 07:04:39 - ContextManager: SimpleMapper1: Adjust for prefix map /servlet/design.Topbar 2000-12-07 07:04:39 - ContextManager: SimpleMapper1: SM: After mapping R( /itraks + /servlet/design.Topbar + null) design.Topbar(design.Topbar/null) 2000-12-07 07:04:39 - ContextManager: Host = endre.devel.coretrek.com 2000-12-07 07:04:39 - ContextManager: SM: Prefix match /itraks/servlet/Workbench -> /servlet/Workbench/* Workbench(Workbench/null) null 2000-12-07 07:04:39 - ContextManager: SimpleMapper1: Adjust for prefix map /servlet/Workbench 2000-12-07 07:04:39 - ContextManager: SimpleMapper1: SM: After mapping R( /itraks + /servlet/Workbench + null) Workbench(Workbench/null) This is strange right away, because why aren't all the servlets destroyed right away? I mean, they're all ditched right away, since a context reload actually puts the whole ClassLoader out of scope and makes a new one to be able to reload the classes. So why aren't they all destroyed too? Then this is if I hit Workbench first, and then hit the "design.Topbar". 2000-12-07 07:08:43 - ContextManager: Host = endre.devel.coretrek.com 2000-12-07 07:08:43 - ContextManager: SM: Prefix match /itraks/servlet/Workbench -> /servlet/Workbench/* Workbench(Workbench/null) null 2000-12-07 07:08:43 - ContextManager: SimpleMapper1: Adjust for prefix map /servlet/Workbench 2000-12-07 07:08:43 - ContextManager: SimpleMapper1: SM: After mapping R( /itraks + /servlet/Workbench + null) Workbench(Workbench/null) 2000-12-07 07:08:43 - Ctx( /itraks ): Pre servlet destroy Workbench(Workbench/null) 2000-12-07 07:08:43 - Ctx( /itraks ): Post servlet destroy Workbench(Workbench/null) 2000-12-07 07:08:43 - ContextManager: Reloading context Ctx( /itraks ) 2000-12-07 07:08:43 - Ctx( /itraks ): Pre servlet init Workbench(Workbench/null) 2000-12-07 07:08:43 - Ctx( /itraks ): Post servlet init Workbench(Workbench/null) 2000-12-07 07:08:49 - ContextManager: Host = endre.devel.coretrek.com 2000-12-07 07:08:49 - ContextManager: SM: Prefix match /itraks/servlet/design.Topbar -> /servlet/design.Topbar/* design.Topbar(design.Topbar/null) null 2000-12-07 07:08:49 - ContextManager: SimpleMapper1: Adjust for prefix map /servlet/design.Topbar 2000-12-07 07:08:49 - ContextManager: SimpleMapper1: SM: After mapping R( /itraks + /servlet/design.Topbar + null) design.Topbar(design.Topbar/null) Why is this so? One more thing: Shouldn't the "load-on-startup" servlets also be started up again on a context-reload? btw; I'm using tomcat 3.2 final. -- Mvh, Endre
