Tomcat启动及配置分析

SpringBoot配置外部Tomcat项目启动流程源码分析(上) SpringBoot应用默认以Jar包方式并且使用内置Servlet容器(默认Tomcat),该种方式虽然简单但是默认不支持JSP并且优化容器比较复杂。故而我们可以使用习惯的外置Tomcat方式并将项目打War包。 阅读详情
Tomcat启动及配置分析
2009-07-31 17:23

1 - Tomcat Server的组成部分
1.1 - Server
A Server element represents the entire Catalina servlet container. (Singleton)
1.2 - Service
A Service element represents the combination of one or more Connector components that share a single Engine
Service是这样一个集合:它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户请求
1.3 - Connector
一个Connector将在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回客户
TOMCAT有两个典型的Connector,一个直接侦听来自browser的http请求,一个侦听来自其它WebServer的请求
Coyote Http/1.1 Connector 在端口8080处侦听来自客户browser的http请求
Coyote JK2 Connector 在端口8009处侦听来自其它WebServer(Apache)的servlet/jsp代理请求
1.4 - Engine
The Engine element represents the entire request processing machinery associated with a particular Service
It receives and processes all requests from one or more Connectors
and returns the completed response to the Connector for ultimate transmission back to the client
Engine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名
当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理
Engine有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理
1.5 - Host
代表一个Virtual Host,虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配
每个虚拟主机下都可以部署(deploy)一个或者多个Web App,每个Web App对应于一个Context,有一个Context path
当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理
匹配的方法是“最长匹配”,所以一个path==""的Context将成为该Host的默认Context
所有无法和其它Context的路径名匹配的请求都将最终和该默认Context匹配
1.6 - Context
一个Context对应于一个Web Application,一个Web Application由一个或者多个Servlet组成
Context在创建的时候将根据配置文件$CATALINA_HOME/conf/web.xml和$WEBAPP_HOME/WEB-INF/web.xml载入Servlet类
当Context获得请求时,将在自己的映射表(mapping table)中寻找相匹配的Servlet类
如果找到,则执行该类,获得请求的回应,并返回
2 - Tomcat Server的结构图

3 - 配置文件$CATALINA_HOME/conf/server.xml的说明
该文件描述了如何启动Tomcat Server


<!-- 启动Server
     在端口8005处等待关闭命令
     如果接受到"SHUTDOWN"字符串则关闭服务器
     -->

<Server port="8005" shutdown="SHUTDOWN" debug="0">


<!-- Listener ???
       目前没有看到这里
       -->

<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0"/>


<!-- Global JNDI resources ???
       目前没有看到这里,先略去
       -->

<GlobalNamingResources>
    ... ... ... ...
</GlobalNamingResources>


<!-- Tomcat的Standalone Service
       Service是一组Connector的集合
       它们共用一个Engine来处理所有Connector收到的请求
       -->

<Service name="Tomcat-Standalone">


    <!-- Coyote HTTP/1.1 Connector
         className : 该Connector的实现类是org.apache.coyote.tomcat4.CoyoteConnector
         port : 在端口号8080处侦听来自客户browser的HTTP1.1请求
         minProcessors : 该Connector先创建5个线程等待客户请求,每个请求由一个线程负责
         maxProcessors : 当现有的线程不够服务客户请求时,若线程总数不足75个,则创建新线程来处理请求
         acceptCount : 当现有线程已经达到最大数75时,为客户请求排队
                       当队列中请求数超过100时,后来的请求返回Connection refused错误
         redirectport : 当客户请求是https时,把该请求转发到端口8443去
         其它属性略
         -->

    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
               port="8080"
               minProcessors="5"
               maxProcessors="75" acceptCount="100"
               enableLookups="true"
               redirectPort="8443"
               debug="0"
               connectionTimeout="20000"
               useBodyEncodingForURI="true"//可以防止在JAVA中弹出的JS代码中出现乱码
               useURIValidationHack="false"
               disableUploadTimeout="true" />


    <!-- Engine用来处理Connector收到的Http请求
         它将匹配请求和自己的虚拟主机,并把请求转交给对应的Host来处理
         默认虚拟主机是localhost
         -->

    <Engine name="Standalone" defaultHost="localhost" debug="0">
   

      <!-- 日志类,目前没有看到,略去先 -->

      <Logger className="org.apache.catalina.logger.FileLogger" .../>

      <!-- Realm,目前没有看到,略去先 -->

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm" .../>


      <!-- 虚拟主机localhost
           appBase : 该虚拟主机的根目录是webapps/
           它将匹配请求和自己的Context的路径,并把请求转交给对应的Context来处理
           -->

      <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" >
     

        <!-- 日志类,目前没有看到,略去先 -->

        <Logger className="org.apache.catalina.logger.FileLogger" .../>
     

        <!-- Context,对应于一个Web App
             path : 该Context的路径名是"",故该Context是该Host的默认Context
             docBase : 该Context的根目录是webapps/mycontext/
             -->

        <Context path="" docBase="mycontext" debug="0"/>
       

        <!-- 另外一个Context,路径名是/wsota -->

        <Context path="/wsota" docBase="wsotaProject" debug="0"/>
            
       
      </Host>
     
    </Engine>

</Service>

</Server>


<!----------------------------------------------------------------------------------------------->

4 - Context的部署配置文件web.xml的说明
一个Context对应于一个Web App,每个Web App是由一个或者多个servlet组成的
当一个Web App被初始化的时候,它将用自己的ClassLoader对象载入“部署配置文件web.xml”中定义的每个servlet类
它首先载入在$CATALINA_HOME/conf/web.xml中部署的servlet类
然后载入在自己的Web App根目录下的WEB-INF/web.xml中部署的servlet类
web.xml文件有两部分:servlet类定义和servlet映射定义
每个被载入的servlet类都有一个名字,且被填入该Context的映射表(mapping table)中,和某种URL PATTERN对应
当该Context获得请求时,将查询mapping table,找到被请求的servlet,并执行以获得请求回应
分析一下所有的Context共享的web.xml文件,在其中定义的servlet被所有的Web App载入

<!----------------------------------------------------------------------------------------------->


<web-app>


<!-- 概述:
       该文件是所有的WEB APP共用的部署配置文件,
       每当一个WEB APP被DEPLOY,该文件都将先被处理,然后才是WEB APP自己的/WEB-INF/web.xml
       -->



<!-- +-------------------------+ -->
<!-- |    servlet类定义部分    | -->
<!-- +-------------------------+ -->



<!-- DefaultServlet
       当用户的HTTP请求无法匹配任何一个servlet的时候,该servlet被执行
       URL PATTERN MAPPING : /
       -->

    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.DefaultServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>


<!-- InvokerServlet
       处理一个WEB APP中的匿名servlet
       当一个servlet被编写并编译放入/WEB-INF/classes/中,却没有在/WEB-INF/web.xml中定义的时候
       该servlet被调用,把匿名servlet映射成/servlet/ClassName的形式
       URL PATTERN MAPPING : /servlet/*
       -->

    <servlet>
        <servlet-name>invoker</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.InvokerServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>


<!-- JspServlet
       当请求的是一个JSP页面的时候(*.jsp)该servlet被调用
       它是一个JSP编译器,将请求的JSP页面编译成为servlet再执行
       URL PATTERN MAPPING : *.jsp
       -->

    <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>logVerbosityLevel</param-name>
            <param-value>WARNING</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>



<!-- +---------------------------+ -->
<!-- |    servlet映射定义部分    | -->
<!-- +---------------------------+ -->

   
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
    </servlet-mapping>


<!-- +------------------------+ -->
<!-- |    其它部分,略去先    | -->
<!-- +------------------------+ -->

    ... ... ... ...

</web-app>


<!----------------------------------------------------------------------------------------------->

5 - Tomcat Server处理一个http请求的过程
假设来自客户的请求为:
http://localhost:8080/wsota/wsota_index.jsp
1) 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得
2) Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应
3) Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host
4) Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)
5) localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context
6) Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)
7) path="/wsota"的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet
8) Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类
9) 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法
10)Context把执行完了之后的HttpServletResponse对象返回给Host
11)Host把HttpServletResponse对象返回给Engine
12)Engine把HttpServletResponse对象返回给Connector
13)Connector把HttpServletResponse对象返回给客户browser

一、Tomcat背景
  自从JSP发布之后,推出了各式各样的JSP引擎。Apache Group在完成GNUJSP1.0的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSP服务器,当然同时也支持Servlet, 这样Tomcat就诞生了。Tomcat是jakarta项目中的一个重要的子项目,其被JavaWorld杂志的编辑选为2001年度最具创新的java产品,同时它又是sun公司官方推荐的servlet和jsp容器,因此其越来越多的受到软件公司和开发人员的喜爱。servlet和jsp的最新规范都可以在tomcat的新版本中得到实现。其次,Tomcat是完全免费的软件,任何人都可以从互联网上自由地下载。Tomcat与Apache的组合相当完美。

二、Tomcat目录
tomcat
|---bin Tomcat:存放启动和关闭tomcat脚本;
|---conf Tomcat:存放不同的配置文件(server.xml和web.xml);
|---doc:存放Tomcat文档;
|---lib/japser/common:存放Tomcat运行需要的库文件(JARS);
|---logs:存放Tomcat执行时的LOG文件;
|---src:存放Tomcat的源代码;
|---webapps:Tomcat的主要Web发布目录(包括应用程序示例);
|---work:存放jsp编译后产生的class文件;


三、Tomcat类加载
    Bootstrap($JAVA_HOME/jre/lib/ext/*.jar)
System($CLASSPATH/*.class和指定的jar)
Common($CATALINA_HOME/common 下的classes,lib,endores三个子目录)
Catalina ($CATALINA_HOME/server/下的classes和lib目录仅对Tomcat可见)
&Shared($CATALINA_HOME/shared/下的classes和lib目录以及$CATALINA_HOME/lib目录)仅对Web应用程序可见,对Tomcat不可见WebApp($WEBAPP/Web-INF/*仅对该WEB应用可见classes/*.class lib/*.jar)


加载类和资源的顺序为:
1、/Web-INF/classes
2、/Web-INF/lib/*.jar
3、Bootstrap
4、System
5、$CATALINA_HOME/common/classes
6、$CATALINA_HOME/common/endores/*.jar
7、$CATALINA_HOME/common/lib/*.jar
8、$CATALINA_HOME/shared/classes
9、$CATALINA_HOME/shared/lib/*.jar

四、server.xml配置简介:
下面讲述这个文件中的基本配置信息,更具体的配置信息请参考tomcat的文档:
    server:
          1、port 指定一个端口,这个端口负责监听关闭tomcat的请求
          2、shutdown 指定向端口发送的命令字符串
    service:
          1、name 指定service的名字
    Connector (表示客户端和service之间的连接):
          1、port 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求
          2、minProcessors 服务器启动时创建的处理请求的线程数
          3、maxProcessors 最大可以创建的处理请求的线程数
          4、enableLookups 如果为true,则可以通过调用request.getRemoteHost()进行DNS查
询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip
地址
          5、redirectPort 指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的
端口号
          6、acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理
队列中的请求数,超过这个数的请求将不予处理
          7、connectionTimeout 指定超时的时间数(以毫秒为单位)
    Engine (表示指定service中的请求处理机,接收和处理来自Connector的请求):
          1、defaultHost 指定缺省的处理请求的主机名,它至少与其中的一个host元素的name
属性值是一样的
    Context (表示一个web应用程序):
          1、docBase 应用程序的路径或者是WAR文件存放的路径
          2、path 表示此web应用程序的url的前缀,这样请求的url为
http://localhost:8080/path/****
          3、reloadable 这个属性非常重要,如果为true,则tomcat会自动检测应用程序的
/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可
以在不重起tomcat的情况下改变应用程序
    host (表示一个虚拟主机):
          1、name 指定主机名
          2、appBase 应用程序基本目录,即存放应用程序的目录
          3、unpackWARs 如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接
从WAR文件中运行应用程序
    Logger (表示日志,调试和错误信息):
          1、className 指定logger使用的类名,此类必须实现org.apache.catalina.Logger 接口
          2、prefix 指定log文件的前缀
          3、suffix 指定log文件的后缀
          4、timestamp 如果为true,则log文件名中要加入时间,如下
例:localhost_log.2001-10-04.txt
   Realm (表示存放用户名,密码及role的数据库):
          1、className 指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口
   Valve (功能与Logger差不多,其prefix和suffix属性解释和Logger 中的一样):
          1、className 指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve
类可以记录应用程序的访问信息
    directory(指定log文件存放的位置):
    1、pattern 有两个值,common方式记录远程主机名或ip地址,用户名,日期,第一行
请求的字符串,HTTP响应代码,发送的字节数。combined方式比common方式记
录的值更多

五、web.xml配置简介:
1、默认(欢迎)文件的设置
在tomcat4\conf\web.xml中,<welcome-file-list>与IIS中的默认文件意思相同。
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

2、报错文件的设置
<error-page>
<error-code>404</error-code>
<location>/notFileFound.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/null.jsp</location>
</error-page>
如果某文件资源没有找到,服务器要报404错误,按上述配置则会调用\webapps\ROOT\notFileFound.jsp。
如果执行的某个JSP文件产生NullPointException ,则会调用\webapps\ROOT\null.jsp

3、会话超时的设置
设置session 的过期时间,单位是分钟;
<session-config>
<session-timeout>30</session-timeout>
</session-config>

4、过滤器的设置
<filter>
<filter-name>FilterSource</filter-name>
<filter-class>project4. FilterSource </filter-class>
</filter>
<filter-mapping>
<filter-name>FilterSource</filter-name>
<url-pattern>/WwwServlet</url-pattern>
(<url-pattern>/haha/*</url-pattern>)
</filter-mapping>

过滤:
1) 身份验证的过滤Authentication Filters
2) 日志和审核的过滤Logging and Auditing Filters
3) 图片转化的过滤Image conversion Filters
4) 数据压缩的过滤Data compression Filters
5) 加密过滤Encryption Filters
6) Tokenizing Filters
7) 资源访问事件触发的过滤Filters that trigger resource access events XSL/T 过滤XSL/T filters
9) 内容类型的过滤Mime-type chain Filter 注意监听器的顺序,如:先安全过滤,然后资源,
然后内容类型等,这个顺序可以自己定。

六、管理
    1、用户配置
      在进行具体Tomcat管理之前,先给tomcat添加一个用户,使这个用户有权限来进行管理。
      打开conf目录下的tomcat-users.xml文件,在相应的位置添加下面一行:
    <user name="user" password="user" roles="standard,manager"/>
    然后重起tomcat,在浏览器中输入http://localhost:8080/manager/,会弹出对话框,输入上面的用户
名和密码即可。

    2、应用程序列表
      在浏览器中输入http://localhost:8080/manager/list,浏览器将会显示如下的信息:
    OK - Listed applications for virtual host localhost
    /ex:running:1
    /examples:running:1
    /webdav:running:0
    /tomcat-docs:running:0
    /manager:running:0
    /:running:0
     上面显示的信息分别为:应用程序的路径、当前状态、连接这个程序的session数

   3、重新装载应用程序
      在浏览器中输入 http://localhost:8080/manager/reload?path=/examples,浏览器显示如下:
    OK - Reloaded application at context path /examples   
这表示example应用程序装载成功,如果我们将server.xml的Context元素的reloadable属性设为true,则没必要利用这种方式重新装载应用程序,因为tomcat会自动装载。

4、显示session信息
    在浏览器中输入http://localhost:8080/manager/sessions?path=/examples,浏览器显示如下:
    OK - Session information for application at context path /examples Default maximum session inactive
interval 30 minutes

5、启动和关闭应用程序
   在浏览器中输入http://localhost:8080/manager/start?path=/examples和
http://localhost:8080/manager/stop?path=/examples分别启动和关闭examples应用程序。

(原文来源于:http://hi.baidu.com/lovernet/blog/item/bc2086536c4ffb070df3e334.html)

 

更多支持:cst21cn.5d6d.com

博主邮箱:lsfhack@163.com

 

Tomcat 启动闪退排查指南:从环境配置到日志分析 本文详细解析了Tomcat启动闪退的常见原因及解决方案,包括环境配置、端口冲突、内存设置和日志分析等关键问题。通过实战案例和排查技巧,帮助开发者快速定位并解决Tomcat启动失败的问题,提升服务器稳定性与运行效率。 阅读详情

相关推荐

SpringBoot配置外部Tomcat项目启动流程源码分析(下)

SpringBoot应用默认以Jar包方式并且使用内置Servlet容器(默认Tomcat),该种方式虽然简单但是默认不支持JSP并且优化容器比较复杂。故而我们可以使用习惯的外置Tomcat方式并将项目打War包。

程序媛小琬的博客 726

Tomcat配置详解

配置好环境,并安装tomcat软件,详细过程见上面一章。

xiaogengtongxu的博客 4239

Tomcat设置服务启动参数

对Tomcat启动参数,内存的设置

【转】tomcat配置大全

Coyote HTTP/1.1 Connector   概述 Coyote HTTP/1.1 Connector元素是一个支持HTTP/1.1协议的Connector组件。它使Catalina除了能够执行servlet和JSP页面外,还能够作为一个单独的web server运行。Connector对象的实例在服务器上监听特定的TCP端口。一个Ser...

iteye_20763的博客 245

人形机器人骨骼材料选型实战:从铝合金到碳纤维的5种方案对比

本文深入探讨人形机器人骨骼材料的选型策略,对比铝合金、镁合金、钛合金、碳纤维复合材料及3D打印材料等5种方案的性能优劣。通过建立强度-重量比、疲劳寿命等核心评价维度,结合具体应用场景,提供科学的材料决策方法论,助力开发者优化机器人结构设计,实现性能与成本的平衡。

weixin_29199873的博客 440

数模笔记_多变量最优化计算之牛顿法

Date: 2_22 Name: Guo Yehao Theme: Calculation in Optimality with multiple variables Reference: 数学建模方法与分析(华章) 在上一节中,我们讨论多变量最优化计算中的随机搜索算法,它的精度并不是众多算法中最高的。在精度问题上,有的时候问题本身就带有明显的误差性,以至于我们不能将其忽略,比如上一节消防站部署的问题,我们在区域划分时就有了误差,因此我们并不需要对结果要求很高的精确度,所以用一些比较粗略的算法就可以.

weixin_45358177的博客 2415

一、Tomcat 配置

一、Tomcat 架构 二、Tomcat 组件及关系 三、server.xml 配置 四、Tomcat 脚本 五、Spring Boot 配置

梦想成真 1990

从硬件到软件:TSMaster报文过滤全链路配置指南(含同星设备适配)

本文详细介绍了TSMaster平台下CAN/LIN/FlexRay总线的报文过滤全链路配置指南,特别针对同星TC1016等硬件的兼容性进行实战演示。从硬件层预过滤到软件层可编程过滤,提供五维过滤体系构建方法,帮助工程师提升车载诊断与总线分析效率。重点解析混合总线过滤策略优化及诊断场景下的特殊过滤方案。

tensorflowjs6的博客 401

Tomcat 服务器配置

Tomcat 服务器配置

qq_61313896的博客 4461

Simplorer-Maxwell联合仿真速度太慢?我用这3个技巧把仿真时间砍半(附SVPWM周期与步长设置避坑)

本文详细介绍了Simplorer-Maxwell联合仿真性能优化的3个关键技巧,包括仿真步长与周期的科学配置、基于任务调度的加速技术以及模型简化与精度平衡。特别针对SVPWM参数设置提供了避坑指南,帮助工程师在不牺牲精度的情况下将仿真时间缩短50%以上,适用于电机驱动系统开发等场景。

weixin_29189381的博客 466

Windows下Anaconda换清华镜像源最全指南(含常见问题解决)

本文提供了一份详尽的Windows系统下Anaconda配置清华镜像源的完整指南。针对网络下载缓慢的痛点,文章详细对比了命令行添加与直接编辑配置文件两种主流方法,并重点解决了配置过程中常见的文件缺失、安装失败、环境求解缓慢等疑难问题,帮助用户一劳永逸地提升包管理效率。

brandy的博客 337

Tomcat服务器的常用配置

1、如何修改端口号, tomcat启动后经常会报端口冲突, 怎么办     如果部署在Linux环境下面, 首先使用netstat -apn命令检查是否是真的端口已经被占用了    如果真的被占用,进入tomcat所在的目录,打开配置文件 ./conf/server.xml    修改 port端口即可                        connectionTimeout=

测试小小的博客 335

蓝牙6.0的‘新雷达’:Channel Sounding信道探测,真能比UWB更香吗?

本文探讨了蓝牙6.0的Channel Sounding信道探测技术在室内定位领域的应用潜力。通过与UWB技术的对比分析,揭示了其在成本、功耗和兼容性方面的优势,特别是在智能门锁、物品追踪等场景中的商业价值。Channel Sounding技术不仅具备亚米级精度,还能通过现有蓝牙设备实现零边际成本部署,为物联网应用提供了新的解决方案。

weixin_29288313的博客 333

Tomcat启动分析(为什么要配置CATALINE_HOME变量)

          用文本编辑工具打开用于启动Tomcat的批处理文件startup.bat,仔细阅读。在这个文件中,首先判断CATALINA_HOME环境变量是否为空,如果为空,就将当前目录设为CATALINA_HOME的值。接着判断当前目录下是否存在bin\catalina.bat,如果文件不存在,将当前目录的父目录设为CATALINA_HOME的值。根据我机器上Tomcat安装目录的层次结构...

故穿庭树作飞花的博客 963

地统计插值学习心得(一)

(创建地统计图层工具用于根据现有的地统计图层或者地统计模型来创建包含新要素数据集的地统计图层,也就是使用构建好的地统计模型用到新的数据集中)这表明,远离极值的区域预测不受极值的影响,并且还表明,包括极值会导致钼元素浓度高的区域周围的预测明显变高。通常,我们使用同一个数据集进行建模和预测,但是在实际插值过程中,这两步的数据可以是不同的,这就是处理极值的诀窍。如果你的数据集有无法忽略的极值时(比如这些钼元素浓度),一种常见的方法是首先显式移除极值进行建模,然后在预测中使用整个数据集(包括极值)。

JData_Engineer的博客 286

uniapp微信小程序开发:解决Video播放m3u8视频流非卡顿问题,使用video视频标签播放M3U8视频流或直播流总是加载一卡一卡的体验非常差的情况【多种优化方案提升流畅度和缓冲方案示例源码】

uniapp微信小程序video播放m3u8视频流卡,uniapp video在微信小程序播放m3u8格式视频总是加载频繁卡顿,Uniapp微信小程序苹果ios真机播放m3u8很卡加载不流畅怎么办,uni-App如何解决小程序端video播放视频流M3U8格式出现卡顿情况,uniapp播放m3u8直播流卡顿如何优化?uniapp m3u8格式视频加载,.m3u8监控视频,uniapp微信小程序使用video组件播放M3U8视频卡顿,uniapp微信小程序视频播放卡顿如何解决,uniapp 打包微信小程序播放

✅ 精选推荐文章 2987

Tomcat源码分析(三):ServletContext应用启动之配置解析

概述

源码之下,了无秘密 6812

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Eclipse, Lomboz and Tomcat 的 JSP 调试(dawave)之补充-tomcat配置与启动分析

    以下仅是我的配置的一点经验,献给在纷乱的版本世界里摸索着向java进军的java beginners    dawave的关于eclipse3+lomboz3+tomcat5开发工具配置的介绍无疑是好文章,给了准备使用或正在使用eclipse3+lomboz3+tomcat5集成开发环境的网友很大帮助。本文仅对dewave的 3.Eclipse, Lomboz and Tomcat 的 J

yadier的专栏 -YADI理想年代-梦想的追逐者 2393

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

基于tomcat启动流程分析自动配置的实现

基于tomcat启动流程分析自动配置的实现

lgb105的博客 320

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

01Tomcat服务器的下载安装与配置 ,Tomcat服务器的启动原理分析,解决Tomcat服务器启动时的DOS乱码问题

启动Tomcat: 执行bin目录下的startup.bat文件(.bat后缀可省略)–>执行catalina.bat文件–>执行org.apache.catalina.startup.Bootstrap类的main方法启动Tomcat。关闭Tomcat: 执行bin目录下的shutdown.bat文件(不可以省略.bat的后缀) ,因为shutdown命令和windows关机命令冲突,可以重命名为stop.bat(可省略后缀)

欢迎阅读我的博客 863

SpringBoot嵌入式servlet容器Tomcat的自动配置原理,以及启动过程分析

springboot采用大量的自动配置,开发者通过少量的配置,就可开发spring应用,可以用来开发单个微服务应用,下面来介绍一下springboot的内置servlet的原理。 1)、创建一个springboot工程 导入相关依赖: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apa...

莫失莫忘的博客 1671

SpringBoot配置外部Tomcat项目启动demo& 流程源码分析(长文),包含servlet、filter添加原理

本篇博文是SpringBoot配置外部Tomcat并打war包姊妹篇。 【3】SpringBoot 使用外部Tomcat启动原理 ① 首先看Servlet3.0中的规范 javax.servlet.ServletContainerInitializer(其是一个接口) 类是通过JAR服务API查找的。对于每个应用程序,ServletContainerInitializer的一个实例是由容器在应用程序启动时创建。 提供servletcontainerinitializer实现的框架必须将名为javax

z69183787的专栏 1079

tomcat源码解读——启动过程分析

参考文章:tomcat源码解读——启动过程分析 在上一篇文章中介绍了idea中tomcat源码调试环境的搭建,调试环境搭建完成之后首先配置tomcat的启动信息,配置信息如下(具体配置步骤参考源码中的README文件) 配置好了tomcat的启动信息之后,就可以开始从源码启动并调试tomcat了,在深入到tomcat的源码之前,为了对tomcat有一个更加直观的了解,可以首先分析一下tomcat...

m47838704的专栏 1250

SpringBoot配置外部Tomcat项目启动流程源码分析(长文)

SpringBoot应用默认以Jar包方式并且使用内置Servlet容器(默认Tomcat),该种方式虽然简单但是默认不支持JSP并且优化容器比较复杂。故而我们可以使用习惯的外置Tomcat方式并将项目打War包。 【1】创建项目并打War包 ① 同样使用Spring Initializer方式创建项目 ② 打包方式选择”war” ③ 选择添加的模块 ④ 创建...

小小默:进无止境 1万+

Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量)

用文本编辑工具打开用于启动Tomcat的批处理文件startup.bat,仔细阅读。在这个文件中,首先判断CATALINA_HOME环境变量是否为空,如果为空,就将当前目录设为CATALINA_HOME的值。接着判断当前目录下是否存在bin\catalina.bat,如果文件不存在,将当前目录的父目录设为CATALINA_HOME的值。根据笔者机器上Tomcat安装目录的层次结构,最后CATALI

静水流深 1381
上一篇: 提高开发效率-jrebel插件安装方法(…
下一篇: 网页关闭事件
jarry.liu
博客等级 码龄16年 36粉丝 304原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jarry.liu

如果对您有帮助,鼓励下博主吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值