Apache tomcat 10是一个免费的开放源代码的Web应用服务器,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,被很多企业普遍使用,也是开发和调试JSP程序的首选,成为目前比较流行的Web应用服务器。而对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。而且,实际上tomcat是Apache服务器的扩展,但运行时它是独立运行的,所以当你运行软件时,它实际上作为一个与Apache独立的进程单独运行的。
另外,全新的tomcat10作为Servlet的容器,有三种工作模式。第一种做为独立的Servlet容器,软件可以作为独立的Web服务器来单独运行,Servlet容器组件做为Web服务器中的一部分二存在,这是软件的默认工作模式。第二种作为其他Web服务器进程内的Servlet容器,在这种模式下,软件分为Web服务器插件和Servlet容器组件两个部分,而Web服务器组件获得用户请求,利用的是JNI通信机制给Servlet容器组件。其中JNI指是Java本地调用接口,通过这一接口,Java程序可以和采用其他语言编写的本地程序进行通信。而第三种作为其他Web服务器进程外的Servlet容器,在这种模式下,软件分为Web服务器组件和Servlet容器组件两部分。Web服务器获取用户请求,并通过IPC通信机制发送给Servlet容器组件。
软件亮点
1、小型实用的轻量级应用服务器。
2、在中小型系统和并发访问用户不是很多的场合下被普遍使用。
3、是开发和调试JSP程序的首选。
4、是Apache服务器的打展,但它是独立运行的。
5、当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。
tomcat10的配置及验证演示说明:
进行配置验证时,首先需要进行jdk的安装与配置。
而jdk安装配置大家可以进入
http://m.ddooo.a300.cn/softdown/210602.htm链接进行查看。
当jdk配置成功后就可以进行接下来的操作了。
1、将下载好的“tomcat_218199.rar”解压为“apache-tomcat-10.0.8”放至“D:\”
2、找到安装路径,安装路径是D:\apache-tomcat-10.0.8
3、右击"我的电脑",点击"属性",选择"高级系统设置";
4、点击环境变量,出现如下图所示:
5、在”系统变量“中添加系统变量CATALINA_BASE,CATALINA_HOME;
变量名:CATALINA_BASE
变量值:D:\apache-tomcat-10.0.8 //此处是Tomcat的安装目录
变量名:CATALINA_HOME
变量值:D:\apache-tomcat-10.0.8 //此处是Tomcat的安装目录
6、此处需要修改ClassPath和Path的变量值。
在ClassPath的变量值中加入:%CATALINA_HOME%\lib\servlet-api.jar;(注意加的时候在原变量值后加英文状态下的“;”)
在Path的变量值中加入:%CATALINA_HOME%\bin;%CATALINA_HOME%\lib(注意加的时候在原变量值后加英文状态下的“;”)
在Path的变量值中加入:%CATALINA_HOME%\bin;%CATALINA_HOME%\lib(注意加的时候在原变量值后加英文状态下的“;”)
7、打开浏览器,输入 http://localhost:8080 进入如下页面则表示配置成功。
软件特点
1、配置系统管理
大多数商业化的JavaEE服务器都提供一个功能强大的管理界面,且大都采用易于理解的Web应用界面。按照自己的方式,同样提供一个成熟的管理工具,并且丝毫不逊于那些商业化的竞争对手。Admin Web Application最初在4.1版本时出现,当时的功能包括管理context、data source、user和group等。当然也可以管理像初始化参数,user、group、role的多种数据库管理等。在后续的版本中,这些功能将得 到很大的扩展,但现有的功能已经非常实用了。
2、部署一个应用
1> 拷贝WAR文件或者web应用文件夹(包括该web的所有内容)到$CATALINA_BASE/webapps目录下。
2> 为web服务建立一个只包括context内容的XML片断文件,并把该文件放到$CATALINA_BASE/webapps目录下。这个web应用本身可以存储在硬盘上的任何地方。
3、配置虚拟主机
关于server.xml中“Host”这个元素,只有在设置虚拟主机的才需要修改。虚拟主机是一种在一个web服务器上服务多个域名的机制,对每个域 名而言,都好象独享了整个主机。实际上,大多数的小型商务网站都是采用虚拟主机实现的,这主要是因为虚拟主机能直接连接到Internet并提供相应的带 宽,以保障合理的访问响应速度,另外虚拟主机还能提供一个稳定的固定IP。
4、配置基础验证
容器管理验证方法控制着当用户访问受保护的web应用资源时,如何进行用户的身份鉴别。当一个web应用使用了Basic Authentication(BASIC参数在web.xml文件中auto-method元素中设置),而有用户访问受保护的web应用时, Tomcat将通过HTTP Basic Authentication方式,弹出一个对话框,要求用户输入用户名和密码。在这种验证方法中,所有密码将被以64位的编码方式在网络上传输。
5、配置单点登录
一旦设置了realm和验证的方法,就需要进行实际的用户登录处理。一般说来,对用户而言登录系统是一件很麻烦的事情,必须尽量减少用户登录验证的 次数。作为缺省的情况,当用户第一次请求受保护的资源时,每一个web应用都会要求用户登录。如果运行了多个web应用,并且每个应用都需要进行单独的 用户验证,那这看起来就有点像在用户搏斗。用户们不知道怎样才能把多个分离的应用整合成一个单独的系统,所有用户也就不知道他们需要访问多少个不 同的应用,只是很迷惑,为什么总要不停的登录。
tomcat10新特性
1、局部变量的类型推
Java开始引用像脚本语言JavaScript中的var类型(弱类型),允许你通过var定义任何类型的变量。
2、应用类数据共享(CDS)
CDS 在 JDK5 时被引进以改善 JVM 启动的表现,同时减少当多个虚拟机在同一个物理或虚拟的机器上运行时的资源占用。JDK10 将扩展 CDS 到允许内部系统的类加载器、内部平台的类加载器和自定义类加载器来加载获得的类。之前,CDS 的使用仅仅限制在了 bootstrap 的类加载器。
3、额外的 Unicode 语言标签扩展
这将改善 java.util.Locale 类和相关的 API 以实现额外 BCP47 语言标签的 Unicode 扩展。尤其是,货币类型,一周的第一天,区域覆盖和时区等标签现在将被支持。
4、根证书
在 JDK 中将提供一套默认的 CA 根证书。关键的安全部件,如 TLS ,在 OpenJDK 构建中将默认有效。这是 Oracle 正在努力确保 OpenJDK 二进制和 Oracle JDK 二进制功能上一样的工作的一部分,是一项有用的补充内容。
5、并行全垃圾回收器 G1
G1 是设计来作为一种低延时的垃圾回收器(但是如果它跟不上旧的堆碎片产生的提升速率的话,将仍然采用完整压缩集合)。在 JDK9 之前,默认的收集器是并行,吞吐,收集器。为了减少在使用默认的收集器的应用性能配置文件的差异,G1 现在有一个并行完整收集机制。
6、移除 Native-Header 自动生成工具
Java9 开始了一些对 JDK 的家务管理,这项特性是对它的延续。当编译 JNI 代码时,已不再需要单独的工具来生成头文件,因为这可以通过 javac 完成。在未来的某一时刻,JNI 将会被 Panama 项目的结果取代,但是何时发生还不清楚。
7、垃圾回收器接口
这不是让开发者用来控制垃圾回收的接口;而是一个在 JVM 源代码中的允许另外的垃圾回收器快速方便的集成的接口。
8、线程-局部变量管控
这是在 JVM 内部相当低级别的更改,现在将允许在不运行全局虚拟机安全点的情况下实现线程回调。这将使得停止单个线程变得可能和便宜,而不是只能启用或停止所有线程。
9、在备用存储装置上的堆分配
硬件技术在持续进化,现在可以使用与传统 DRAM 具有相同接口和类似性能特点的非易失性 RAM 。这项 JEP 将使得 JVM 能够使用适用于不同类型的存储机制的堆。
10、试验性的基于 Java 的 JIT 编译器
最近宣布的 Metropolis 项目,提议用 Java 重写大部分 JVM 。乍一想,觉得很奇怪。如果 JVM 是用 Java 编写的,那么是否需要一个 JVM 来运行 JVM ? 相应的,这导致了一个很好的镜像类比。 现实情况是,使用 Java 编写 JVM 并不意味着必须将其编译为字节码,你可以使用 AOT 编译,然后在运行时编译代码以提高性能。这项 JEP 将 Graal 编译器研究项目引入到 JDK 中。并给将 Metropolis 项目成为现实,使 JVM 性能与当前 C++ 所写版本匹敌(或有幸超越)提供基础。
11、合并 JDK 多个代码仓库到一个单独的储存库中
在 JDK9 中,有 8 个仓库: root、corba、hotspot、jaxp、jaxws、jdk、langtools 和 nashorn 。在 JDK10 中这些将被合并为一个,使得跨相互依赖的变更集的存储库运行 atomic commit (原子提交)成为可能。
更新日志
v10.1.24版本
1、记录没有值的cookie时的小型性能优化。
2、修复:更正异步请求的错误处理。如果应用程序在AsyncListener.onError()期间执行调度,则现在执行调度,而不是使用错误页面机制完成请求。
3、添加:在AbstractAccessLogValve中重新因子ElapsedTimeElement以使用可自定义的样式。
4、添加:向AccessLogValve和ExtendedAccessLogValve添加更多时间刻度选项。允许时间刻度应用于ExtendedAccessLogValve中的“耗时”令牌。
5、修复:修复WebDAV锁null(非现有资源的锁)线程安全和删除问题。
6、修复:添加WebDAV锁过期的定期检查。
7、修复:扩展Asn1Parser解析UTF8Strings。
8、修复:删除已删除的属性的MBean元数据。基于Shawn Q.的拉取请求