加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

查漏补缺:毗连器在Tomcat中是怎样计划的

发布时间:2019-09-24 21:00:06 所属栏目:业界 来源:今日头条
导读:从毗连器(Connector)源码提及 既然是来理会毗连器(Connector),那么我们直接从源码入手,后头全部源码我会剔除不重要部门,以是会忽略大部门源码细节,只存眷流程。源码如下(高能预警,大量代码): publicclassConnectorextendsLifecycleMBeanBase{ public

这段注释翻译就是,这个接口是提供应组件声明周期打点的,而且提供了声明周期流转图。这里我们只必要知道正常流程即可:

  1. New--->Init()---->Start()---->Stop()--->Destory() 

从生命周期试探毗连器

按照上面的生命周期声名,我们可以知道毗连器(Connector)就是凭证云云的声明周期打点的,以是我们找到了线索,以是毗连器必定会先初始化然后再启动。我们查察其initInternal()要领可以知道毗连器初始化做了什么工作,源码如下:

  1. @Override 
  2.  protected void initInternal() throws LifecycleException { 
  3.  super.initInternal(); 
  4.  if (protocolHandler == null) { 
  5.  throw new LifecycleException( 
  6.  sm.getString("coyoteConnector.protocolHandlerInstantiationFailed")); 
  7.  } 
  8.  // Initialize adapter 
  9.  adapter = new CoyoteAdapter(this); 
  10.  protocolHandler.setAdapter(adapter); 
  11.  if (service != null) { 
  12.  protocolHandler.setUtilityExecutor(service.getServer().getUtilityExecutor()); 
  13.  } 
  14.  // Make sure parseBodyMethodsSet has a default 
  15.  if (null == parseBodyMethodsSet) { 
  16.  setParseBodyMethods(getParseBodyMethods()); 
  17.  } 
  18.  if (protocolHandler.isAprRequired() && !AprLifecycleListener.isInstanceCreated()) { 
  19.  throw new LifecycleException(sm.getString("coyoteConnector.protocolHandlerNoAprListener", 
  20.  getProtocolHandlerClassName())); 
  21.  } 
  22.  if (protocolHandler.isAprRequired() && !AprLifecycleListener.isAprAvailable()) { 
  23.  throw new LifecycleException(sm.getString("coyoteConnector.protocolHandlerNoAprLibrary", 
  24.  getProtocolHandlerClassName())); 
  25.  } 
  26.  if (AprLifecycleListener.isAprAvailable() && AprLifecycleListener.getUseOpenSSL() && 
  27.  protocolHandler instanceof AbstractHttp11JsseProtocol) { 
  28.  AbstractHttp11JsseProtocol<?> jsseProtocolHandler = 
  29.  (AbstractHttp11JsseProtocol<?>) protocolHandler; 
  30.  if (jsseProtocolHandler.isSSLEnabled() && 
  31.  jsseProtocolHandler.getSslImplementationName() == null) { 
  32.  // OpenSSL is compatible with the JSSE configuration, so use it if APR is available 
  33.  jsseProtocolHandler.setSslImplementationName(OpenSSLImplementation.class.getName()); 
  34.  } 
  35.  } 
  36.  try { 
  37.  protocolHandler.init(); 
  38.  } catch (Exception e) { 
  39.  throw new LifecycleException( 
  40.  sm.getString("coyoteConnector.protocolHandlerInitializationFailed"), e); 
  41.  } 
  42.  } 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读