-
1.用户点击网页的内容,请求被发送到主机的8080端口,会在那里监听8080端口的connector获得,
2.接下来connector会请求它所在的server的Engine来处理,并且等待Engine的回应,
3.Engine获得的请求是localhost-teckst-index.jsp,它就去匹配所有的虚拟主机,也就是Host,Engine去匹配名称为localhost的host,也就是站点,名称为localhost的站点获得请求teckst-index.jsp,
4.然后再去匹配所有的context,而host匹配的路径为teckst-Context,也就是项目,
5.然后第五步,匹配到-Context的context,它去获得的请求是Index.jsp,它就会在它的Mackie table里面去寻找对应的servlet,
6.对应的servlet就会构建两个对象,一个是appservletrequest和reponse两个对象,并且作为参数去调用jspservlet的doget或者dopost方法, 然后去执行业务逻辑,比如说数据存储,
7.然后context就会把执行完的httpservletresponse对象返回给Host,
8.Host把response对象返回给Engine,
9.Engine再返回给Connector,
10.Connector再返回给客户端。
查看全部 -
配置热部署
什么是热部署?
就是在不重新启动Tomcat服务器的条件下,将自己的项目部署到Tomcat服务器中。
如何配置热部署?
直接将自己的web文件放入webapps文件夹中。
conf/server.xml <host>标签中中添加context标签:
<Context debug="0" docBase="D:\demo1\web" path="/demo1" reloadable="true" />
-----debug越大,程序发生异常时,写入日志文件的详细程度越大,默认为0
------docBase 项目的绝对路径或者相对路径(相对webapps)
------path 项目的访问方式
-------reloadable 如果为true 自动加载新增或者改变的class文件
在conf/catalina下面的localhost中添加一个xml文件
新建一个demo2.xml文件,粘贴配置信息:
<?xml version="1.0" encoding="UTF-8"?>
<Context debug="0" docBase="D:\demo1\web" path="/demo1" reloadable="true" />
这时候demo2作为访问项目的名称,path不起作用。
查看全部 -
修改内存
为什么要修改Tomcat内存?
日常开发中,开发项目比较大的时候依赖的jar包比较多,并且在应用服务器启动的时候,会将项目引用的所有的类依次全部加载到内存当中,java的逻辑内存模式分为堆内存(存储类的实例,数组、引用类型也就是用new生成的对象)、栈内存(存储局部变量比如方法参数)、静态内存区(持久区,该区内存不会被gc回收,存常量、静态变量、类的源数据:方法属性什么的)
在开发当中经常遇到的内存溢出的异常
OutOfMemoryErroe:Java heap space异常------>堆内存满了
JVM中堆内存的大小默认使用的最小内存是我们物理内存的1/64,最大的使用我们物理内存的1/4,我们通过调整JVM中的初始内存和最大内存来改变我们使用内存的限制
OutOfMemoryError:PermGen space异常
表示静态内存区满了,通常是因为加载的类太多导致的,jdk8以下的需要修改两个参数限制静态区最小和最大内存范围,,jdk8改变了内存模型,将类定义存放到了源数据空间,而源数据空间与堆内存共享的是同一块内存区域,所以在jdk8版本以后就不会再出现PermGen space异常了。
StackOverflowError异常
栈内存溢出:通常是由于死循环或无线递归导致的
配置内存参数
网上有两种方式,一种是在start.bat,一种是在catalina中
bin/catalina编辑:配到第2行/192行都行
JAVA_OPTS=“-server -Xms512m -Xmx1024m
-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m ”
-Xms:java heap初始大小 ,默认为物理内存的1/64,最大不要超过物理内存的80%
-Xmx:java heap的最大值,建议设置为物理内存的一半,不要超过实际的物理内存
MetaspaceSize:初始源空间的值,默认21m,
MetaspaceSize:最大源空间的值,默认无上限
虚拟机的堆大小决定了虚拟机花费在数据垃圾上的时间和频率,调整虚拟机的堆大小目的是最小化垃圾回收的时间,一般用物理内存的80%作为堆内存的大小
查看全部 -
1.Server 指整个Tomcat服务器,其中包含多个组件,主要负责管理和启动各个service,同时监听8005端口发过来的shut down命令,用于关闭整个服务器。
2.Service 是Tomcat封装的用于对外提供完整的基于组件的web服务,主要包括connector和container两个核心组件和多个功能组件。各个service之间的独立的,但是他们会共享同一个虚拟机资源。
3.Connector 是Tomcat与外部世界的一个连接器,监听固定的端口,接收外部请求,然后将请求传递给container,并且将container的处理结果再返回给外部。
4.Container 是一个servlet容器,内部由多层容器组成,主要用于管理servlet 的生命周期,然后调用servlet 的相关方法去处理业务逻辑。
5.Jasper 是Tomcat的JSP的解析引擎,用于将JSP文件转化成Java文件,并且编译成.class文件。
6.Naming 其实是一个命名服务,将名称和对象联系起来,使得可以用名称去访问对象。
7.Session 负责管理和创建session,session的持久化。可以自定义,并且支持session的集群。对于Tomcat而言,session是在服务器开辟的内存空间。在开发中,经常用session来存储一些临时的信息。
8.Loging 负责记录相关的日志,包含访问错误信息和一下运行信息。
9.JMX javase中的定义的一个技术规范,主要是为应用程序,设备,系统等植入管理功能的框架。通过jmx可以远程监控Tomcat的运行状况。
查看全部 -
1.Server 指整个Tomcat服务器,其中包含多个组件,主要负责管理和启动各个service,同时监听8005端口发过来的shut down命令,用于关闭整个服务器。
2.Service 是Tomcat封装的用于对外提供完整的基于组件的web服务,主要包括connector和container两个核心组件和多个功能组件。各个service之间的独立的,但是他们会共享同一个虚拟机资源。
3.Connector 是Tomcat与外部世界的一个连接器,监听固定的端口,接收外部请求,然后将请求传递给container,并且将container的处理结果再返回给外部。
4.Container 是一个servlet容器,内部由多层容器组成,主要用于管理servlet 的生命周期,然后调用servlet 的相关方法去处理业务逻辑。
5.Jasper 是Tomcat的JSP的解析引擎,用于将JSP文件转化成Java文件,并且编译成.class文件。
6.Naming 其实是一个命名服务,将名称和对象联系起来,使得可以用名称去访问对象。
7.Session 负责管理和创建session,session的持久化。可以自定义,并且支持session的集群。对于Tomcat而言,session是在服务器开辟的内存空间。在开发中,经常用session来存储一些临时的信息。
8.Loging 负责记录相关的日志,包含访问错误信息和一些运行信息。
9.JMX javase中的定义的一个技术规范,主要是为应用程序,设备,系统等植入管理功能的框架。通过jmx可以远程监控Tomcat的运行状况。
查看全部 -
connector
1.接收客户端连接
2.加工处理客户端请求
每个Connector都将指定一个端口进行监听,分别负责对请求报文的解析和响应报文组装,解析过程生成Request对象,而组装过程涉及Response对象。
如果将Tomcat整体比作一个巨大的城堡,那么Connector组件就是城堡的城门,每个人要进入城门就必须通过城门,它为人们进出城堡提供了通道。同时,一个城堡还可能有两个或者多个城门,每个城门代表了不同的通道。
container
1.所有的子容器的父接口
2.使用责任链设计模式
3.包含四个子容器:Engine、Host、Context、Wrapper
责任链模式:使多个对象都有机会去处理同一个请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。
Engine:用来管理多个站点,一个service最多只能由一个engine;
Host:代表一个站点,也可以叫虚拟主机,通过配置Host就可以添加站点。
Context:代表一个应用程序,相当于一个war包。
Wrapper:一个封装了的servlet.
查看全部 -
Server服务器:是指整个tomcat服务器,其中包含多个组件;主要负责管理和启动各个service,同时监听8005发送过来的shot down命令,用来关闭整个服务器。
Service: tomcat封装的,主要对外提供完整的基于组件的web服务,它其中包含Connector和Container两个核心组件以及多个功能组件。各个Service之间是独立的,但是它们共享同一个虚拟机资源。
Connector: tomcat与外部世界的一个连接器,监听固定的端口,接收外部请求,并将请求结果传给Container,将Container处理的结果返回给外部。
Container: 是一个servlet容器,内部由多层容器组成,主要用于管理servlet的生命周期,调用servlet的相关方法去处理业务逻辑。
Jasper: tomcat的jsp解析引擎,主要用于将jsp文件转化成java文件,并且编译成.class文件。
Naming: 命名服务,将名称和对象联系起来,以便用名称访问对象。
Session:主要负责创建和管理Session,以及session的持久化。
Loging: 记录相关的日志。
JMX: JavaSE中定义的一种规范。
查看全部 -
Connecter组件:接受客服端连接,加工处理请求
责任链模式:通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。http://www.runoob.com/design-pattern/chain-of-responsibility-pattern.html
查看全部 -
热部署
(1)tomcat运行时,war包放入webapps会自动解压
(2)server.xml配置
<Context path="/up" docBase="F:\学习视频" reloadable="true"></Context>
(3)在Tomcat 8.5\conf\Catalina下建立xml,内容同上,服务器回忆xml的名称作为访问路径
<Context docBase="F:\学习视频" reloadable="true"></Context>
查看全部 -
setTimeBetweenEvictionRunsMillis 空闲连接回收器线程回收期休眠时间(设置为负数则不执行,若要执行传入的值不应小于10000)
查看全部 -
准备一个空间 专门用来保存所有数据库连接 用户对数据库进行操作可直接从这个空间里取走连接,关闭的时候则把连接放回到空间中 ——> 这个空间就可以称之为连接池 20/6/30 /23:01
查看全部 -
1.单点登录的概念
单点登录(Single Sign On),简称为SSO,是目前比较流行的企业服务整合的解决方案之一
SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统
2.CAS
开源的企业级单点登录解决方案
从结构上:CAS Server和CAS Client
CAS Server:需要独立部署,负责对用户的认证工作。
CAS Client:负责对客户端的受保护的资源的访问请求
查看全部 -
测试参数的含义
1.JmxEnabled:是否将连接注册到JMX中
JMX 就是一个框架,通过将监控和管理涉及到各个方面的问题和解决办法放到一起统一的去设计,以便向外部提供服务,供使用者去调用。
监控系统的状态,管理系统的缓存。
默认值是true。
2. setTestWhileIdle(false): 是否被空闲连接回收期进行检测
3. setTestOnBorrow(true): 是否在连接池取出连接前进行检查
4. setValidationQuery("SELECT 1"): sql查询
用来验证从连接池中取出的连接,在返回给调用者之前,指定的参数的查询必须使用sql语句,select的语句至少返回一条记录。
一般默认值是 SELECT 1 .
5. setTestOnReturn(false): 是否在归还前进行检查
在归还到数据库连接池之前,是否进行一个校验。
一般设为false。
6. setValidationInterval(30000): 设置验证频率
参数为上限。避免过度验证。
参数的单位为毫秒。
5.setTimeBetweenEvivtionRunsMillis(30000): 回收期休眠时间
空闲的连接回收期线程,在运行期间的休眠时间值,单位为毫秒。
如果设置为非整数,就不会运行。
不应该小于1秒。
6.setMaxActive(100):最大活动连接
在连接池中,同一时间能够分配的最大的活动连接数量。
如果设置成非整数,就表示没有限制。
7. setInitialSize(10): 初始化连接
8. setMaxWait(10000): 最大等待时间
9. setMinIdle(10): 最小的空闲连接
10. setJDBCInterceptors(): JDBC拦截器
查看全部 -
1.什么是连接池?
准备一个空间,专门存放数据库连接,用户使用时直接从空间中取走连接,关闭时将连接放回空间中。这个空间就被称为连接池。
数据库连接池就是在程序初始化的时候,集中创建多个数据库连接,并且集中管理,供程序去使用。它不仅可以保证数据库的读写速度,而且更加安全可靠。
连接池提高了性能,也提高了安全性。
2.JDBC操作数据库
加载驱动>创建链接>执行SQL>(关闭数据库)释放连接
3.JDBC库的数据源有两种配置方式
异步配置连接
独立配置连接
4.DBCP
饱受诟病,单线程,性能低,比较复杂
查看全部 -
1.什么是热部署?
就是在不重新启动Tomcat服务器的条件下,将自己的项目部署到Tomcat服务器中。
2.如何配置热部署?---------三种方式
直接将自己的web文件放入webapps文件夹中。
conf/server.xml <host>标签中添加context标签:
<Context debug="0" docBase="D:\demo1\web" path="/demo1" reloadable="true" />
-----debug越大,程序发生异常时,写入日志文件的详细程度越大,默认为0
------docBase 项目的绝对路径或者相对路径(相对webapps)
------path 项目的访问方式
-------reloadable 如果为true 自动加载新增或者改变的class文件
在conf/catalina下面的localhost中添加一个xml文件
新建一个demo2.xml文件,粘贴配置信息:
<?xml version="1.0" encoding="UTF-8"?>
<Context debug="0" docBase="D:\demo1\web" path="/demo1" reloadable="true" />
这时候demo2作为访问项目的名称,path不起作用。
查看全部
举报