def unloadWebApp(self, vhost, web): webapp = self.allWebApps[(vhost, web)] name = os.path.split(webapp.getFileSystemPath())[1] modulename = "webapps." + name # count instances of the web app that we're going to unload... instances = [ wapp for wapp in self.allWebApps.values() if wapp.getName() == webapp.getName() ] if len(instances) > 1: return False del instances for n in sys.modules.keys()[:]: if n.startswith(modulename) and type( sys.modules[n]) is types.ModuleType: del sys.modules[n] if webapp in self.virtualHosts[vhost]: self.virtualHosts[vhost].remove(webapp) if vhost in self.webRoots and self.webRoots[vhost] is webapp: del self.webRoots[vhost] try: webapp.close() except Exception, x: log.warn("error during unload: %s", x)
def reloadWebApp(self, vhost, urlprefix): # reload the webapp for this url prefix numapps=len(self.allWebApps) webapp=self.allWebApps[(vhost,urlprefix)] webappname=webapp.getName()[0] webappid=id(webapp) del webapp wasRoot=False if vhost in self.webRoots: wasRoot=self.webRoots[vhost].getName()[0]==webappname log.info( "UNLOADING WEBAPP '%s' [%s] id=%08x" % (webappname, vhost, webappid) ) if self.unloadWebApp(vhost, urlprefix): if len(self.allWebApps) != (numapps-1): log.warn( "**** WEBAPP '%s' [%s] DIDN'T UNLOAD FULLY ****" % (webappname, vhost)) WA = self.readWebApp(webappname, vhost, isRoot=wasRoot) self._registerWebApp(vhost, WA, isRoot=wasRoot) log.info("RELOADED WEBAPP '%s' [%s] id=%08x" % (webappname, vhost, id(WA))) return True else: return False
def reloadWebApp(self, vhost, urlprefix): # reload the webapp for this url prefix numapps = len(self.allWebApps) webapp = self.allWebApps[(vhost, urlprefix)] webappname = webapp.getName()[0] webappid = id(webapp) del webapp wasRoot = False if vhost in self.webRoots: wasRoot = self.webRoots[vhost].getName()[0] == webappname log.info("UNLOADING WEBAPP '%s' [%s] id=%08x" % (webappname, vhost, webappid)) if self.unloadWebApp(vhost, urlprefix): if len(self.allWebApps) != (numapps - 1): log.warn("**** WEBAPP '%s' [%s] DIDN'T UNLOAD FULLY ****" % (webappname, vhost)) WA = self.readWebApp(webappname, vhost, isRoot=wasRoot) self._registerWebApp(vhost, WA, isRoot=wasRoot) log.info("RELOADED WEBAPP '%s' [%s] id=%08x" % (webappname, vhost, id(WA))) return True else: return False
def unloadWebApp(self, vhost, web): webapp=self.allWebApps[(vhost,web)] name=os.path.split(webapp.getFileSystemPath())[1] modulename="webapps."+name # count instances of the web app that we're going to unload... instances = [wapp for wapp in self.allWebApps.values() if wapp.getName()==webapp.getName() ] if len(instances)>1: return False del instances for n in sys.modules.keys()[:]: if n.startswith(modulename) and type(sys.modules[n]) is types.ModuleType: del sys.modules[n] if webapp in self.virtualHosts[vhost]: self.virtualHosts[vhost].remove(webapp) if vhost in self.webRoots and self.webRoots[vhost] is webapp: del self.webRoots[vhost] try: webapp.close() except Exception,x: log.warn("error during unload: %s",x)