Tomcat架构和server.xml

Tomcat实质上是Web服务器,执行Java servlet的应用程序,将JSP页面和文档转换为Java servlet的应用程序。 Tomcat的最新版本是运行在 Java SE 5上的6.0.14,它实现了Servlet 2.5和JSP 2.1规范并且支持UEL。 代码清单7-1 默认的server.xml 图7-1所示为主要Tomcat组件是如何分层组织的。 上下文(Context) Context是一组被叫做容器的Tomcat组件中的最里层元素,它代表单个Web应用程序。 Tomcat会自动实例化并配置一个标准context以着手加载你的应用程序。Tomcat也会处理在应用程序文件夹下WEB-INF\web.xml文件中定义的特性,使它们可被应用程序所用。 连接器 Connector是一个与处理引用程序和客户端(像远程浏览器)之间通信的TCP端口相关联的组件。Tomcat的默认配置包括一个处理HTTP通信的连接器。http://localhost:8080/。 所有应用程序的请求都是通过一个连接器实例处理的,每个新请求都会导致在连接器内实例化一个新线程,在请求存在的整个过程中这个线程都会保持激活状态。 默认情况下tomcat还定义了另一个连接器 ——Apache JServ Protocol(AJP)——用来和类似于Apache HTTP server这样的Web服务器通信。这个连接器允许Tomcat只处理动态Web页面,并允许纯HTML服务器(像Apache Web Server)来处理静态页面请求。 主机 Host容器代表一个虚拟主机,www.myDomain.com这样的名称和服务器关联起来。一个主机可以包含任意数量的上下文(也就是应用程序)。同一服务器上可以定义多个主机。 Host的appBase属性定义了在Tomcat安装文件夹中的应用程序目录。然后,每个应用程序将其在此目录下的路径作为标识符。唯一的例外是路径ROOT,它被映射到空字符串。对于 localhost来说,应用程序的基本目录为webapps。这意味着在下面目录中的应用程序: 是由空字符串标识的。因此,它的URL是http://localhost:8080/。 你也可以为appBase赋一个绝对路径。 属性unpackWARs="true"代表如果你在appBase目录中放入一个WAR文件,Tomcat会自动将其展开为标准文件夹。如果你将该属性设置为false,应用程序会直接从WAR文件运行。这显然会减慢应用程序的执行速度,因为在其执行时需要解压缩。 属性autoDeploy="true"代表如果你在Tomcat运行时向appBase中放入一个应用程序,这个应用程序会自动部署。实际上,这个定义是多余的,因为autoDeploy的默认值就是true。 属性xmlValidation="false"和 xmlNamespaceAware="false"涉及到了在主机中用到的web.xml文件。如果你将xmlValidation设置为true而将 xmlNamespaceAware设置为false,将会限制验证因为DTD/schema会被忽略。我们建议你将两个属性都设置为false。你最好是使用像Eclipse这样的工具来检查XML,它们可以提前告诉你问题的所在,而不是依靠Tomcat在运行时显示堆栈跟踪信息。 引擎 Engine是最高级别的容器。可以包含多个主机但不能被任何其他的容器组件包含。 一个引擎必须包含一个或多个主机,其中一个被指定为默认主机。Tomcat默认配置包括引擎Catalina,其中包含主机localhost。 Catalina引擎处理通过HTTP连接器接收的所有传入请求,并返回相应的响应。它以请求头中包含的信息为基础,将每个请求转到正确的主机和上下文中。 Catalina引擎就是servlet引擎。 服务 Service组件的目的是将一个或多个连接器关联到特定的引擎上。 Tomcat默认设置中包括服务Catalina,用于把HTTP和AJP连接器关联到Catalina引擎上。因此,Connector和Engine是Service元素的子元素。 服务器 Server是代表Tomcat实例的顶级组件。它可以包含一个或多个服务,每个服务有自己的引擎和连接器。 监听器 Listener是一个实现了org.apache.catalina.LifecycleListener接口的Java对象,它能够对确定的事件做出响应。 第一个监听器用于启用Apache可移植运行库(Apache Protable Runtime,APR)。这个程序库提供的功能整合了操作系统(对我们来说就是Microsoft Windows)所提供的功能。它的目的是增加跨操作系统的可移植性。这个程序包中的一个功能是,当SSLEngine属性设置为on时(这是默认设置)支持OpenSSL。 第二个监听器用于启用JSP引擎Jasper。例如,这个监听器使得重编译被更新的JSP文档成为可能。 第三个监听器用于启用Java管理扩展(Java Management Extensions,JMX)。这是包含在Java SE中的一项技术,它使得远程监控管理系统对象、应用程序、网络和设备成为可能。 第四个也是最后一个监听器用于启用全局资源。例如,它使我们在Eshopf中使用JNDI访问MySQL数据库成为可能(见代码清单5-19)。 最主要的是这些监听器改进或提供了一些Tomcat功能,因此应该保持原封不动。 全局命名资源 GlobalNamingResources元素只能定义在Server组件中。它定义的JNDI资源在整个服务器上都是可用的。包含在默认server.xml中的唯一资源是通过文件conf/tomcat-users.xml定义的用户密码内存数据库。 领域 Realm组件可以出现在任何容器组件(Engine、Host和Context)里面。它代表一个用户、密码和用户角色的数据库,其作用是支持基于容器的认证。换句话说,你可以为每个应用程序、主机或者引擎制定一个认证数据库。 在默认的server.xml中定义的唯一领域位于Catalina引擎中(见代码清单7-1第19~20行)。它指向了被定义为JNDI全局资源的用户数据库。 除了UserDatabaseRealm,还有下列领域类:JDBCRealm(通过JDBC驱动连接一个关系数据库)、DataSourceRealm(连接一个通过JNDI指定的JDBC数据源)、 JNDIRealm(连接一个LDAP目录)和MemoryRealm(加载一个XML文件到内存中)。 集群 Tomcat通过以下3种功能提供服务器集群。 跨越集群服务器复制会话。确保在一个服务器上打开的会话在所有其他服务器上都有效 复制上下文属性。这使得你在所有的服务器上访问上下文属性成为可能。 通过WAR文件集群范围部署。确保同一个应用程序在一个集群的所有服务器上执行。 你可以将Cluster元素放在Engine或Host容器中。 阀门 Valve是一个元素,当将其插入到一个 Container(Context、Host或者Engine)中时,会在所有传入HTTP请求到达应用程序之前拦截住它们。这使你有能力预处理指向某个特定应用程序、指向运行在一个虚拟主机上的应用程序,或者指向运行在一个引擎中的所有应用程序的请求。 你可能要使用的其中一个阀门是访问日志阀门,它允许你将请求日志入口定制到选择的文件中。 远程地址过滤(remote address filter)阀门允许你以请求源的IP地址为基础,选择性地阻断请求。这个阀门支持两个属性——allow和deny——它们都接受正则表达式作为值。例如,下面的阀门允许从地址段192.168.*.*发送的所有请求,并拒绝其他所有请求。 另一方面,使用deny="84.74.97.75",将会允许除了从IP地址84.74.97.75发来的请求之外的所有请求。 远程主机过滤(remote host filter)阀门的操作和远程地址过滤阀门类似,只是用客户端主机名称代替了客户端IP地址。例如,下面的阀门只允许从属于myweb.com域的主机发来的请求。 请求记录(request dumper)阀门用于把传入请求的详细信息记入日志,因此其可用于调试。下面是你如何定义它。 单点登录(single sign on)阀门(可以包含在Host容器中),其作用是对这个主机中的所有应用程序只需要一次认证。没有这个阀门,用户就必须在使用每个单独应用程序之前,输入他的ID和密码;下面是其使用方法。 加载器和管理器 通过在Context元素中定义一个Loader元素,你可以用自己的加载器代替应用程序中的标准类加载机制。 如果你想代替默认的会话管理,可以定义一个Manager。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值