Jakarta Tomcat结构概述

浅谈 jakarta Jakarta 是一个 Java 生态系统中的命名空间,旨在为 Java 技术和规范提供一个开放、中立的基础。Jakarta 由 Java 基金会的一个开放源代码项目组成,提供了一系列的规范和参考实现,例如 Jakarta EE、Jakarta Persistence、Jakarta JSON、Jakarta Batch 等等。在 Java 生态系统中,最初,javax 是一个缩写,代表 Java Extension。 阅读详情
Tomcat服务器是一种Servlet/JSP容器,经历了3.x到4.0.x到4.1.x的变迁,现在最新的版本为5.0.x,支持Servlet2.4和JSP2.0规范.安装Tomcat之前必须安装JDK,并在环境变量中设置JAVA_HOME变量。这样Tomcat就可以启动了。

2.文件构成

安装后的Tomcat文件构成如下图所示:

 

2.1首先介绍Java类库的存放位置,有三个:分别是/server/lib、/shared/lib和/common/lib。

三个位置的区别:/server/lib下的Jar文件只能被Tomcat服务器自身访问;/shared/lib下的jar文件及类只能被部署在Tomcat中的所有Web应用访问,不能被Tomcat服务器本身访问;/common/lib下的Jar文件及类既能被部署在Tomcat中的所有Web应用访问,也能被Tomcat服务器本身访问。

此外某个Web应用下的Web-inf/lib下的Jar文件只能被该Web应用访问。

2.2类的加载顺序

(1).最先是$JAVA_HOME/jre/lib/ext/下的jar文件。

(2).环境变量CLASSPATH中的jar和class文件。

(3).$CATALINA_HOME/common/classes下的class文件。

(4).$CATALINA_HOME/commons/endorsed下的jar文件。

(5).$CATALINA_HOME/commons/i18n下的jar文件。

(6).$CATALINA_HOME/common/lib 下的jar文件。
(JDBC驱动之类的jar文件可以放在这里,这样就可以避免在server.xml配置好数据源却出现找不到JDBC Driver的情况。)
(7).$CATALINA_HOME/server/classes下的class文件。

(8).$CATALINA_HOME/server/lib/下的jar文件。

(9).$CATALINA_BASE/shared/classes 下的class文件。

(10).$CATALINA_BASE/shared/lib下的jar文件。

(11).各自具体的webapp /WEB-INF/classes下的class文件。

(12).各自具体的webapp /WEB-INF/lib下的jar文件。

2.3 admin应用和manager应用

这是Tomcat中自带的两个Web应用,位于<%CATALINA_HOME%>/server/webapps/admin(manager),访问地址是http://localhsot:8080/admin(manager)。要访问这两个Web应用,需要在
<%CATALINA_HOME%>/conf/tomcat-users.xml中添加如下内容:
<user username="admin" password="1234" role="admin"/>           //对应admin Web应用
<user username="manager" password="1234" role="manager"/>   //对应manager Web应用

admin应用-把所有可配置的信息分为三类:Tomcat Server、Resources、User Definition。
Tomcat Server-相当于server.xml中的<Server>元素及其子元素,<Service>、<Host>、<Context>、<Resources>、<Date Source>。
Resources-相当于server.xml中的<GlobalNamingResources>,共有四种资源:Date Source(JNDI数据源)、Mail Sessioin(JNDI Mail Session资源)、Environment Entry(环境变量)、User Database(安全域中的用户数据库)。
User Definition-与tomcat-users.xml相对应。

manager应用-列出来所有Web应用和状态,并提供了Start、Stop、Reload、 Undeploy命令,还可以发布
<%CATALINA_HOME%>/webapps目录下的Web应用或系统文件任意位置的WAR文件。

3. 相关配置

Tomcat里面常修改的配置文件有两个Server.xml和Web.xml。

3.1 Server.xml--文件位置是<%CATALINA_HOME%>/conf/server.xml。该文件配置整个Tomcat服务器,其包含的各个域说明如下所示:

<Server>元素每个Service元素只能有一个Engine元素.元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求.由org.apahce.catalina.Engine接口定义.

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

1>className指定实现Engine接口的类,默认值为StandardEngine
2>defaultHost指定处理客户的默认主机名,在<Engine>中的<Host>子元素中必须定义这一主机
3>name定义Engine的名字

在<Engine>可以包含如下元素<Logger>, <Realm>, <Value>, <Host>

 <Host>元素由Host接口定义.一个Engine元素可以包含多个<Host>元素.每个<Host>的元素定义了一个虚拟主机.它包含了一个或多个Web应用.

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

1>className指定实现Host接口的类.默认值为StandardHost
2>appBase指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于<CATALINA_HOME>的相对目录.如果没有此项,默认为<CATALINA_HOME>/webapps
3>autoDeploy如果此项设为true,表示Tomcat服务处于运行状态时,能够监测appBase下的文件,如果有新有web应用加入进来,会自运发布这个WEB应用
4>unpackWARs如果此项设置为true,表示把WEB应用的WAR文件先展开为开放目录结构后再运行.如果设为false将直接运行为WAR文件
5>alias指定主机别名,可以指定多个别名
6>deployOnStartup如果此项设为true,表示Tomcat服务器启动时会自动发布appBase目录下所有的Web应用.如果Web应用中的server.xml没有相应的<Context>元素,将采用Tomcat默认的Context
7>name定义虚拟主机的名字

在<Host>元素中可以包含如下子元素<Logger>, <Realm>, <Value>, <Context>

<Context>元素由Context接口定义.是使用最频繁的元素.每个<Context元素代表了运行在虚拟主机上的单个Web应用.一个<Host>可以包含多个<Context>元素.每个web应用有唯一的一个相对应的Context代表web应用自身.servlet容器为第一个web应用创建一个ServletContext对象.

<Context path="/sample" docBase="sample" debug="0" reloadbale="true">

1>className指定实现Context的类,默认为StandardContext类
2>path指定访问Web应用的URL入口,注意/myweb,而不是myweb了事
3>reloadable如果这个属性设为true, Tomcat服务器在运行状态下会监视在WEB-INF/classes和Web-INF/lib目录CLASS文件的改运.如果监视到有class文件被更新,服务器自重新加载Web应用
3>cookies指定是否通过Cookies来支持Session,默认值为true
4>useNaming指定是否支持JNDI,默认值为了true


在<Context>元素中可以包含如下元素<Logger>, <Realm>, <Resource>, <ResourceParams>

Connector元素由Connector接口定义.<Connector>元素代表与客户程序实际交互的给件,它负责接收客户请求,以及向客户返回响应结果.

<Connector port="8080" maxThread="50" minSpareThreads="25" maxSpareThread="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" />

<Connection port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" />

第一个Connector元素定义了一个HTTP Connector,它通过8080端口接收HTTP请求;第二个Connector元素定义了一个JD Connector,它通过8009端口接收由其它服务器转发过来的请求.

Connector元素共用属性
1>className指定实现Connector接口的类
2>enableLookups如果设为true,表示支持域名解析,可以把IP地址解析为主机名.WEB应用中调用request.getRemoteHost方法返回客户机主机名.默认值为true
3>redirectPort指定转发端口.如果当前端口只支持non-SSL请求,在需要安全通信的场命,将把客户请求转发至SSL的redirectPort端口
HttpConnector元素的属性
1>className实现Connector的类
2>port设定Tcp/IP端口,默认值为8080,如果把8080改成80,则只要输入http://localhost即可
因为TCP/IP的默认端口是80
3>address如果服务器有二个以上ip地址,此属性可以设定端口监听的ip地址.默认情况下,端口会监听服务器上所有的ip地址
4>bufferSize设定由端口创建的输入流的缓存大小.默认值为2048byte
5>protocol设定Http协议,默认值为HTTP/1.1
6>maxThreads设定在监听端口的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数目.默认值为200
7>acceptCount设定在监听端口队列的最大客户请求数量,默认值为10.如果队列已满,客户必须等待.
8>connectionTimeout定义建立客户连接超时的时间.如果为-1,表示不限制建立客户连接的时间
JkConnector的属性
1>className实现Connector的类
2>port设定AJP端口号
3>protocol必须设定为AJP/1.3

3.2 Web.xml--文件位置是webapps/Web应用/WEB-INF/Web.xml。该文件是Web应用部署描述文件,用于配置其发布信息,主要配置以下内容:

(1)Servlet的定义

(2)Servlet的初始化参数

(3)servlet及jsp的映射

(4)welcome文件清单

(5)资源引用(如数据源引用)

(6)环境变量的定义

3.3 Tomcat中JNDI数据源的配置

(1).  在<%CATALINA_HOME%>/conf/server.xml中加入注意DBTest为你的webapp目录:

<Context path="/DBTest" docBase="/DBTest" debug="0" reloadable="true" crossContext="true">  
        <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"/>
     <ResourceParams name="jdbc/TestDB">
       <parameter>
         <name>factory</name>
         <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
       </parameter>
       <parameter>
         <name>maxActive</name>
         <value>100</value>
       </parameter>
       <parameter>
         <name>maxIdle</name>
         <value>30</value>
       </parameter>
       <parameter>
         <name>maxWait</name>
         <value>10000</value>
       </parameter>
       <parameter>
        <name>username</name>
        <value>sa</value>
       </parameter>
       <parameter>
        <name>password</name>
        <value>cugb201201</value>
       </parameter>
       <parameter>
          <name>driverClassName</name>
          <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
       </parameter>
       <parameter>
         <name>url</name>
         <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=TestDB1</value>
       </parameter>
     </ResourceParams>
    </Context>

(2)在webapp/WEB-INF/web.xml中加入<resource-ref>元素:

<resource-ref>

<res-ref-name>jdbc/TestDB</res-ref-name>

    <res-type>javax.sql.DataSource</res-type>

    <res-auth>Container</res-auth>

    <res-sharing-scope>Shareable</res-sharing-scope>

  </resource-ref>

(3)本代码以sqlServer为例说明,需要将其相关的jdbc驱动程序拷贝到<CATALINA_HOME>/common/lib目录下.

(4)在程序中通过连接池取得数据库连接:

try{

        Context ctx = new InitialContext();

               if(ctx == null)

                      throw new Exception("no Context!");

               ds = (DataSource)ctx.lookup("java:comp/env/jdbc/TestDB");

}

catch(Exception e){

        System.out.println(e.getMessage());

} 

 

Jakarta Tomcat结构概述

    Tomcat服务器是由一系列可配置的组件构成,其核心组件是Catalina Servlet容器,它是所有其他Tomcat组件的顶层容器。Tomcat的组件可以在<CATALINA_HOME>/conf/server.xml文件中进行配置,每个Tomcat的组件在server.xml文件中对应一种配置元素.一下代码以XML的形式展示了各种Tomcat组件之间的关系:
<Server>
    <Service>
        <Connector/>
        <Engine>
            <Host>
                <Context>
                </Context>
            </Host>
        </Engine>
    </Service>
</Server>
    在以上XML代码中,每个元素都代表一种Tomcat组件.这些元素分四类:
    1.顶层类元素    顶层类元素包括<Server>元素和<Service>元素,他们位于整个配置文件的顶层.
    2.连接器类元素    连接器类元素代表了介于客户与服务之间的通信接口,负责将客户的请求发送给服务器,并将服务器的响应结果传递给客户.
    3.容器类元素    容器类元素代表处理客户请求并生成响应结果的组件,有3种容器类元素,它们是Engine,Host和Context. Engine组件为特定的Service组件处理所有客户请求,Host组件为特定的虚拟主机处理所有客户请求,Context组件为特定的Web应用处理所有客户请求.
    4.嵌套类元素    嵌套类元素代表了可以加入到容器中的组件,如<Logger>元素、<Valve>元素和<Realm>元素,这些元素将在后面的做介绍。
    下面,再对一些基本的Tomcat元素进行介绍。如果要了解这些元素,可以参考附录A(Server.xml文件)。
    <Server>元素
    代表了整个Catalina Servlet容器,它是Tomcat实例的顶层元素.可包含一个或多个<Service>元素.
    <Service>元素
    包含一个<Engine>元素,以及一个或多个<Connector>元素,这些<Connector>元素共享同一个<Engine>元素.
    <Connector>元素
    代表和客户程序实际交互的组件,他负责接收客户请求,以及向客户返回响应结果.
    <Engine>元素
    每个<Service>元素只能包含一个<Engine>元素. <Engine>元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求.
    <Host>元素
    一个<Engine>元素中可以包含多个<Host>元素.每个<Host>元素定义了一个虚拟主机,它可以包含一个或多个Web应用.
    <Context>元素
    每个<Context>元素代表了运行虚拟主机上的但个Web应用.一个<Host>元素中可以包含多个<Context>元素.
 
2. Tomcat的服务器配置文件server.xml
    Tomcat服务器是由一系列可配置的组件构成,Tomcat的组件可以在<CATALINA_HOME>/conf/server.xml文件中进行配置,每个Tomcat组件和server.xml文件中的一种配置元素对应.下面就一些常用的元素做了介绍.关于server.xml的更多信息,可以参考Tomcat的文档:
    <CATALINA_HOME>/webapps/tomcat-docs/config/index.html
    下面是一个server.xml文件的样例:
-----------------------------------------------------------------------------------
<!-- Example Server Configuration File -->
 
<Server port="8005" shutdown="SHUTDOWN" debug="0">
  <Service name="Catalina">
    <Connector port="8080"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" /> 
    <Engine name="Catalina" defaultHost="localhost" debug="0"> 
       <Logger className="org.apache.catalina.logger.FileLogger"
              prefix="catalina_log." suffix=".txt"
              timestamp="true"/> 
       <Realm className="org.apache.catalina.realm.MemoryRealm"/>  
       <Host name="localhost" debug="0" appBase="webapps"
             unpackWARs="true" autoDeploy="true">
                           
           <Valve className="org.apache.catalina.valves.AccessLogValve"
                  directory="logs" prefix="localhost_access_log." suffix=".txt"
                  pattern="common" resolveHosts="false"/> 
           <Logger className="org.apache.catalina.logger.FileLogger"
               
   directory="logs"  prefix="localhost_log." suffix=".txt"
                   timestamp="true" />       
               <Context path="/sample" docBase="sample" debug="0" reloadable="true">                            
                   <Resource name="jdbc/BookDB"
                             auth="Container"
                             type="javax.sql.DataSource"/>                                  
                   <ResourceParams name="jdbc/BookDB">                                  
                        <parameter>
                             <name>
factory</name>
                             <vlaue>
org.apache.commons.dbcp.BasicDataSourceFactory</value>
                        </parameter>                                         
                        <parameter>
                             <name>
maxActive</name>
                             <value>
100</value>
                        </parameter>                                         
                        <parameter>
                             <name>
maxIdle</name>
                             <value>
30</value>
                        </parameter>                                                
                        <parameter>
                             <name>
maxWait</name>
                             <value>
10000</value>
                        </parameter>                                         
                        <parameter>
                             <name>
username</name>
                             <value>
dbuser</value>
                        </parameter>                                         
                        <parameter>
                             <name>
password</name>
                             <value>
1234</value>
                        </parameter>                                         
                        <parameter>
                             <name>
driverClassName</name>
                             <value>
com.mysql.jdbc.Driver</value>
                        </parameter>                                         
                        <parameter>
                            
<name>url</name>

                             <value>
jdbc:mysql://localhost:3306/BookDB?autoReconnect=true</value>
                        </parameter>                                         
                  </ResourceParams>                                  
              </Context>                           
          </Host>                    
      </Engine>             
  </Service>   
  <Service name="Apache">
      <Connector prot="8009"
                 enableLookups="false" redirectPort"8443" debug="0"
                 protocol="AJP/1.3"/>                           
      <Engine name="Apache" defaultHost="localhost" debug="0">                       
          <Logger className="org.apache.catalina.logger.FileLogger"
                  prefix="apache_log." suffix=".txt"
                  timestamp="true"/>                                  
          <Realm className="org.apache.catalina.realm.MemoryRealm"/>                    
      </Engine> 
  </Service>
</Server>
 
-----------------------------------
下面,对基本的 Tomcat 元素逐一介绍。  
1. 配置Server元素

   <Server>
元素代表了整个Catalina Servler容器,它是Tomcat实例的顶层元素,由org.apache.catalina.Server接口来定义.<Server>元素中可以包含一个或者多个<Service>元素,但<Server>元素不能作为任何其他元素的子元素.范例代码中定义的<Server>元素如下 :
     <Server port="8005" shutdown="SHUTDOWN" debug="0">
    <Server>属性含义:
--------------------------------------------------------------
    className  :指定实现org.apache.catalina.Server接口的类,默认值为org.apache.catalina.core.StandardServer.
    port       :指定Tomcat服务器监听shutdown命令的端口.终止Tomcat服务运行时,必须在Tomcat服务器所在的机器上发出Shutdown命令.该属性是必须设定的.
    shutdown   :指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性是必须设定的.
2. 配置Service元素

    <Service>元素由org.apache.catalina.Service接口定义,它把韩一个<Engine>元素,以及一个或多个<Connector>元素,这些<Connector>元素共享一个<Engine>元素. 例如,在范例文件中配置了两个<Service>元素

    <Service name="Catalina">
 
name="Apache">
    第一个<Service>处理所有直接由Tomcat服务器接收的Web客户请求,第二个<Service>处理由Apache服务器转发过来的Web客户请求.

   <Service
    <Service> 属性含义:
--------------------------------------------------------------
    className  :指定实现org.apache.catalina.Service接口的类,默认值为org.apache.catalina.core.StandardService.
    name       :定义Service的名字.
3. 配置Engine元素

    <Engine>元素由org.apahe.catalina.Engine接口定义. 每个<Service>元素只能包括一个<Engine>元素. <Engine>元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求. 例如,在范例server.xml文件中配置了一下的<Engine>元素:

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

    <Engine>属性含义:
--------------------------------------------------------------
    className  :指定实现org.apache.catalina.Engine接口的类,默认值为org.apache.catalina.core.StandardEngine.
    name       :定义Engine的名字.

    在<Engine>元素中可以包含如下的子元素:
        <Logger>
        <Realm>
        <Valve>
        <Host>
4. 配置Host元素

    <Host>元素由org.apache.catalina.Host接口定义.一个<Engine>元素可以包含多个<Host>元素.每个<Host>元素定义了一个虚拟主机,它可以包含一个或多个Web应用. 例如,在样例server.xml中配置了以下<Host>元素:

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

    以上代码定义了一个名为localhost的虚拟主机,Web客户访问它的URL为: http://localhost:8080/

    <Host >属性含义:
--------------------------------------------------------------
    className    :指定实现org.apache.catalina.
Host 接口的类,默认值为org.apache.catalina.core.Standard Host .
    appBase      :指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于<CATALINA_HOME>的相对目录. 如果此项没有设定,默认值为<CATALINA_HOME>/webapps.
    unpackWARs   :如果此项设为true,表示将把Web应用的WAR文件先展开为开放目录结构后再运行.如果设为false,将直接运行WAR文件.
    autoDeploy   :如果此项设为true,表示当Tomcat服务器处于运行状态时,能够监测appBase下的文件,如果有新的Web应用加入进来,会自动发布这个Web应用.
    alias        :指定虚拟主机的别名,可以指定多个别名.
    deployOnStartup :如果此项设为true,表示Tomcat服务器启动时会自动发布appBase目录下的所有Web应用,如果Web应用在server.xml中没有相应的<Context>元素,将采用Tomcat默认的Context. deployOnStartup的默认值为true.
    name         :定义虚拟主机的名字.}

    在<Host>元素中可以包含如下的子元素:
        <Logger>
        <Realm>
        <Valve>
        <Context>
5. 配置Context元素

   
<Context>元素由org.apache.catalina.Context接口定义. <Context>元素是使用最频繁的元素. 每个<Context>元素代表了运行在虚拟主机上的单个Web应用. 一个<Host>元素中可以包含多个<Context>元素. 例如, 在样例server.xml文件中配置了以下<Context>元素:

               <Context path="/sample" docBase="sample" debug="0" reloadable="true">
   

    < Context>属性含义:
--------------------------------------------------------------
    className   :指定实现org.apache.catalina.Context接口的类,默认值为org.apache.catalina.core.StandardContext.
    path        :指定访问该Web应用的URL入口.
    docBase     :指定Web应用的文件路径.可以给定绝对路径,也可以给定相对于Host的appBase属性的相对路径. 如果Web应用采用开放目录结构,那就指定Web应用的根目录;如果Web应用是个WAR文件,那就指定WAR文件的路径.
    reloadable  :如果这个属性设为true,Tomcat服务器在运行状态下会监视在WEB-INF/class和WEB-INF/lib目录下CLASS文件的改动.如果检测到有calss文件被更新,服务器会自动重新加载Web应用.
    cookies     :指定是否通过Cookie来支持Session,默认为true.
    useNaming   :指定是否支持JNDI,默认为true.

    在<Context>元素中可以包含如下的子元素:
        <Logger>
        <Realm>
        <Valve>
        <Resource>
        <ResourceParams>
6. 配置Connector元素

    <Connector>元素由org.apache.catalina.Connector接口定义.<Connector>元素代表与客户程序实际交互的组件,它负责接收客户的请求,以及向客户返回响应结果.例如, 在样例server.xml文件中配置了两个<Connector>元素:

   

      prot="8009"
                 enableLookups="false" redirectPort"8443" debug="0"
                 protocol="AJP/1.3"/>      

    第一个<Connector>元素定义了一个HTTP Connector,它通过8080端口接收HTTP请求;
    第二个<Connector>元素定义了一个JK Connector,它通过8009端口接收由其他HTTP服务器(如Apache服务器)转发过来的客户请求.

   
所有的<Connector>元素都具有一些共同的属性,这些属性如下: <Connector  <Connector port="8080"
                 maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                 enableLookups="false" redirectPort="8443" acceptCount="100"
                 debug="0" connectionTimeout="20000"
                 disableUploadTimeout="true" /> 
    < Connector>属性含义(共同属性):
--------------------------------------------------------------
    className      :指定实现org.apache.catalina.
Connector 接口的类,默认值为org.apache.catalina.core.Standard Connector .
    enableLookups  :如果设为true,表示支持域名解析,可以把IP地址解析为主机名.Web应用调用request.getRemostHost方法将返回客户的主机名.该属性默认值为true.
    redirectPort   :指定转发端口.如果当前端口只支持non-SSL请求,在需要安全通信的场合,将把客户请求转发到基于SSL的redirectPort的端口.

    HttpConnector的属性描述如下:
--------------------------------------------------------------
    calssName      :指定实现org.apache.catalina.Connector接口的类,默认值为org.apache.coyote.tomcat5.CoyoteConnector.
    enableLookups  :同上.
    redirectPort   :同上.
    prot           :设定TCP/IP断口号,默认为8080.
    address        :如果服务器有两个以上IP地址,该属性可以设定端口监听的IP地址,默认情况下,端口会监听服务器上所有IP地址.
    bufferSize     :设定由端口创建的输入流的缓存大小,默认值为2048byte.
    protocol       :设定HTTP协议,默认值为HTTP/1.1.
    maxThreads     :设定处理客户请求的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数目,默认值为200.
    acceptCount    :设定在监听端口队列中的最大客户请求数,默认值为10. 如果队列已满,客户请求将被拒绝.
    connectionTimeout :定义建立客户连接超时的时间,以毫秒为单位.如果设置为-1,表示不限制建立客户连接的时间.

    JK Connector 的属性如下:
--------------------------------------------------------------
    className      :指定实现org.apache.catalina.Connector接口的类,默认值为org.apache.coyote.tomact5.CoyoteCnnector.
    enableLookups  :同上.
    redirectPort   :同上.
    port           :设定AJP端口号.
    protocol       :必须设定为AJP/1.3协议.
Jakarta EE 实验 — Web 聊天室(过滤器、监听器版) 本文介绍了一个基于JakartaEE框架的简易Web聊天室系统开发实验。实验使用IntelliJ IDEA 2025.2创建项目,通过Maven构建,依赖JakartaEE API。系统实现了Servlet Filter和Listener的核心功能:EncodingFilter处理请求编码和敏感词过滤,AuthFilter进行权限验证;AppInitListener初始化应用数据,SessionLifecycleListener管理会话生命周期。聊天室使用ServletContext共享在线用户列表、消息列 阅读详情

相关推荐

深入理解Jakarta Tomcat Connectors源码分析与配置指南

本文还有配套的精品资源,点击获取 简介:本文档标题“jakarta-tomcat-connectors-1.2.15-src.tar.gz”代表了Jakarta Tomcat Connectors版本1.2.15的源代码压缩包。该包包含mod_jk模块和JK系列动态链接库,这些组件负责Apache HTTP服务器和Tomcat应用服务器之间的通信。开发者可以解压此压缩包以深...

weixin_36235398的博客 1193

Apache_tomcat和jakarta_tomcat区别

1)apache是一个开源的组织名。后来制定了一个以apache命名的开源协议。    jakarta是apache组织下的一套Java解决方案的开源软件的名称。Tomcat,ant,struts等等也是apache下的开源项目。同时也是jakarta的关联项目。(分别点击左边的“jakarta”和“tomcat”可以分别进入jakarta页http://jakarta.apache.org

MicroBoy的博客 1341

jakarta-tomcat-4.1.31.zip

java开发必备工具 哎,没办法,想下载资料没积分了

Tomcat 结构概述

1.Tomcat的结构概述    Tomcat服务器是由一系列可配置的组件构成,其核心组件是Catalina Servlet容器,它是所有其他Tomcat组件的顶层容器。Tomcat的组件可以在/conf/server.xml文件中进行配置,每个Tomcat的组件在server.xml文件中对应一种配置元素.一下代码以XML的形式展示了各种Tomcat组件之间的关系:       

奥巴牛的博客 1362

jakarta-tomcat-5.0.24.zip

jsp环境配置程序,适用于windows

Jakarta Tomcat配置的十大技巧

多数商业化的J2EE服务器都提供一个功能强大的管理界面,且大都采用易于理解的Web应用界面。Tomcat按照自己的方式,同样提供一个成熟的管理工具,并且丝毫不逊

javax.servlet 和 jakarta.servlet的关系和使用tomcat部署 jakarta.servlet

javax.servlet 和 jakarta.servlet的关系和使用tomcat部署 jakarta.servlet

hjji12的博客 2万+

腾讯2020 unreal虚幻面试题

解析一下,腾讯的unreal客户端面试题: 1.lua性能优化的方向 申请的内存,是造成卡顿的原因之一,在C++与lua交互中,如果参数或者返回值有类变量,那么这个变量不会再交互的栈中存放数据,而会通过申请内存,再指定在交互,这样就造成卡顿,因此可以通过把C++的对象的每个参数分开单独传递,可以解决问题,当时我们游戏改完这个问题后,整体提升了2帧。 其实,主要是Tick循环中,减少与C++的交互,需要的数据不要每帧都去拿,其次,经常拿的一些数据(比方说主角信息),可以做一个lua缓存,...

qq_17347313的博客 1万+

tomcat的配置文件

增加下面的行: 语法说明: directory="logs" ----存放日志的目录,请不要修改 prefix="bbs_access_log." ----日志文件名 suffix=".log" ---日志文件扩展名 pattern="%a...." ---日志字段参数 resolveHosts="false" --- 参数说明: %a - Remote IP add

崇尚狼性的专栏 786

使用FileZilla在武汉大学IGS数据分析中心下载GNSS数据

2.依次点击如下图标下载到本地并解压安装(按系统选择要下载的版本)

qq_43381998的博客 6040

2024年上半年网络工程师下午真题及答案解析

位于MPLS域边缘、连接其他网络的LSR称为( 3 ),区域内部的LSR称为核心LSR(CoreLSR)IP报文进入MPLS网络时,MPLS入口设备分析IP报文的内容并为其添加合适的标签,所有MPLS网络中的LSR根据标签转发数据,当该IP报文离开MPLS网络时,标签由出口LER弹出。LSP的出口LER称为( 6 )。某高校网络拓扑如下图所示,两校区核心(CORE-1、CORE-2),出口防火墙(NGFW-1、NGFW-2)通过校区间光缆互联,配置OSPF实现全校路由收敛,两校区相距40km。

bsefef的博客 2471

Tomcat基础学习笔记

先占个坑,推荐此文 Tomcat学习笔记(史上最全tomcat学习笔记) - 小白教程 (voidme.com)http://www.voidme.com/content/tomcat-learning-notes-bsx

sulia1234567890的博客 434

青藏高原冻土数据实战:如何用QGIS分析1961-2020年冻土退化趋势(附完整操作步骤)

本文详细介绍了如何使用QGIS分析1961-2020年青藏高原冻土退化趋势,包括数据准备、预处理、时空分析和模型验证等全流程操作。通过TTOP模型和Stefan方程,揭示了冻土退化的空间差异和海拔依赖性,为环境研究提供科学依据。

weixin_29276847的博客 127

转载 jakarta tomcat与Apache Tomcat 有什么区别

转载地址: http://hi.baidu.com/luckytimes/blog/item/335f7106619f1a7e02088103.html  1)apache是一个开源的组织名。后来制定了一个以apache命名的开源协议。 jakarta是apache组织下的一套Java解决方案的开源软件的名称,它包括了很多子项目。Tomcat,ant,struts等等也是apache下

Grisky的专栏 1034

安卓APP通过CH340实现USB串口通信与设备检测

本文详细介绍了安卓APP通过CH340芯片实现USB串口通信与设备检测的完整流程。从CH340芯片的基础原理到开发环境搭建,再到串口通信的具体实现和错误处理,提供了全面的技术指导。文章还分享了USB热插拔处理、自动重连策略以及性能优化等实战技巧,帮助开发者高效完成安卓与嵌入式设备的通信开发。

weixin_42531925的博客 379

LIGGGHTS颗粒模拟入门:从DEM原理到工程实践

离散元法(DEM)是一种用于模拟颗粒物质行为的数值方法,其核心原理是通过计算每个颗粒的运动和相互作用来预测颗粒系统的宏观行为。该方法基于牛顿第二定律和接触力学模型,能够精确描述颗粒间的碰撞、摩擦和粘结等微观机制。在工程实践中,DEM技术为优化工业设备设计、预测材料流动和减少实验成本提供了重要价值。它广泛应用于制药造粒、矿石破碎、粉体输送和农业加工等领域,帮助工程师和研究人员深入理解颗粒系统的复杂动力学。LIGGGHTS作为一款基于LAMMPS的开源DEM软件,继承了其高效的并行计算架构,并针对颗粒模拟进行了

weixin_33979203的博客 417

Apache Tomcat Jakarta EE 迁移指南

Apache Tomcat Jakarta EE 迁移指南 项目介绍 Apache Tomcat Jakarta EE 迁移项目旨在帮助开发者将现有的基于 Java EE 的应用程序迁移到 Jakarta EE 规范。这个项目提供了一系列工具和指南,以简化迁移过程,确保应用程序能够顺利过渡到新的规范。 项目快速启动 环境准备 确保你已经安装了 Java 8 或更高版本。 克隆项目仓库: git ...

gitblog_00354的博客 1398

深入理解DQN中的Q值:核心概念和应用

在强化学习中,Q值(或称为动作价值函数)是核心概念之一。Q值函数 ( Q(s, a) ) 表示在给定状态 ( s ) 下,采取动作 ( a ) 并遵循某策略后,智能体从当前状态到未来状态所能获得的预期总回报。简言之,Q值是评估特定状态和动作对的好坏的指标。

qlkaicx的博客 2975

apache 和 jakarta各是什么?tomcat与它两有什么关系?

apache 和 jakarta各是什么?tomcat与它两有什么关系? 網絡上的不同回答: 1: apache是一个开源的组织名。后来制定了一个以apache命名的开源协议。jakarta是apache组织下的一套Java解决方案的开源软件的名称,它包括了很多子项目。Tomcat,ant,struts等等也是apache下的开源项目。同时也是jakarta的关联项目。官网:

ccecwg的专栏 9374

【Proteus仿真】用24C04与1602LCD设计的简易加密电子密码锁

【Proteus仿真】用24C04与1602LCD设计的简易加密电子密码锁

perseverance51博客 1121

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

jakarta tomcat与Apache tomcat (转载)

1)apache是一个开源的组织名。后来制定了一个以apache命名的开源协议。 jakarta是apache组织下的一套Java解决方案的开源软件的名称,它包括了很多子项目。Tomcat,ant,struts等等也是apache下的开源项目。同时也是jakarta的关联项目。  官网:www.apache.org (分别点击左边的“jakarta”和“tomcat”可以分别进入jakarta页

ccecwg的专栏 825

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【亲测免费】 Apache Tomcat Jakarta EE 迁移工具下载及安装教程

Apache Tomcat Jakarta EE 迁移工具下载及安装教程 1. 项目介绍 Apache Tomcat Jakarta EE 迁移工具是一个用于将基于 Java EE 8 的 Web 应用程序自动迁移到 Jakarta EE 9 的工具。该工具的主要目的是帮助开发者将运行在 Apache Tomcat 9 上的 Java EE 8 应用程序转换为可以在 Apache Tomcat 1...

gitblog_01270的博客 1423

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Apache Tomcat Jakarta EE 迁移工具安装和配置指南

Apache Tomcat Jakarta EE 迁移工具安装和配置指南 1. 项目基础介绍和主要编程语言 Apache Tomcat Jakarta EE 迁移工具是一个开源项目,旨在帮助开发者将基于Java EE 8的应用程序迁移到支持Jakarta EE 9的Apache Tomcat 10上。该项目的主要编程语言是Java,它提供了一个命令行工具和Ant任务,用于自动化迁移过程。 2. 项...

gitblog_01266的博客 1127

Jakarta EE 配置:IDEA + Tomcat + Servlet

这里我使用的是Maven进行项目管理,可以参考下面文章,在IDEA上配置Maven。可以选择IDEA自带的Maven,也可到官网自行下载并配置。我们可以在 Tomcat 的官网查看相关的版本对应信息,这里给出网址,并附上表格。Apache Tomcat 是一个开源软件实现 Jakarta EE(前身为 Java EE)技术的子集。这些版本的 Apache Tomcat 已达到生命周期的尽头,用户鼓励升级到受支持的版本。*“最终”版本从来都不是_绝对_最终的,而是在之后发布的 这些都是极不可能的。

m0_74825746的博客 1774

Tomcat 10新特性全解析:Jakarta EE迁移必备指南

你是否正面临Tomcat版本升级的困境?从Tomcat 9迁移到Tomcat 10时遭遇大量编译错误?应用部署后出现ClassNotFoundException?这些问题的根源在于Oracle将Java EE移交Eclipse基金会后引发的命名空间变革。本文将系统剖析Tomcat 10的核心变化,提供完整的迁移路线图,帮助你平稳过渡到Jakarta EE生态。 读完本文你将掌握: - Jakar...

gitblog_00921的博客 1103
上一篇: server.xml元素详解
下一篇: Tomcat中server.xml和web.xml相关属性的关系
ThomasBoxing
博客等级 码龄21年 2粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值