WEB开发网
开发学院软件开发Java Tomcat 系统架构与设计模式,第 1 部分: 工作原理... 阅读

Tomcat 系统架构与设计模式,第 1 部分: 工作原理

 2010-05-21 00:00:00 来源:WEB开发网   
核心提示: 清单 1. StandardService. SetContainerpublicvoidsetContainer(Containercontainer){ContaineroldContainer=this.container;if((oldContainer!=null)&&(oldCont

清单 1. StandardService. SetContainer

public void setContainer(Container container) { 
  Container oldContainer = this.container; 
  if ((oldContainer != null) && (oldContainer instanceof Engine)) 
    ((Engine) oldContainer).setService(null); 
  this.container = container; 
  if ((this.container != null) && (this.container instanceof Engine)) 
    ((Engine) this.container).setService(this); 
  if (started && (this.container != null) && (this.container instanceof Lifecycle)) { 
    try { 
      ((Lifecycle) this.container).start(); 
    } catch (LifecycleException e) { 
      ; 
    } 
  } 
  synchronized (connectors) { 
    for (int i = 0; i < connectors.length; i++) 
      connectors[i].setContainer(this.container); 
  } 
  if (started && (oldContainer != null) && (oldContainer instanceof Lifecycle)) { 
    try { 
      ((Lifecycle) oldContainer).stop(); 
    } catch (LifecycleException e) { 
      ; 
    } 
  } 
  support.firePropertyChange("container", oldContainer, this.container); 
} 

这段代码很简单,其实就是先判断当前的这个 Service 有没有已经关联了 Container,如果已经关联了,那么去掉这个关联关系—— oldContainer.setService(null)。如果这个 oldContainer 已经被启动了,结束它的生命周期。然后再替换新的关联、再初始化并开始这个新的 Container 的生命周期。最后将这个过程通知感兴趣的事件监听程序。这里值得注意的地方就是,修改 Container 时要将新的 Container 关联到每个 Connector,还好 Container 和 Connector 没有双向关联,不然这个关联关系将会很难维护。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Tomcat 架构

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接