目录 start
目录 end
|2018-06-04| 码云 | CSDN | OSChina
7 8 8.5 9
大版本优化Tomcat性能,提升速倍
JSTL的实现
用于连接IIS Apache
官方文档一款功能强大的Tomcat管理监控工具 psi-probe
Tomcat监控管理工具
更多查看
Tomcat那些事儿
公众号
Tomcat目录部署与Context描述文件context.xml | Tomcat配置文件解析与Digester
| Servlet到底是单例还是多例你了解吗? | Tomcat类加载器以及应用间class隔离与共享
| 啥,Tomcat里竟然还有特权应用? | 你了解JMX在Tomcat的应用吗?
Windows 平台
Linux 平台
chmod +x *.sh
配置管理账号 tomcat-users.xml
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="admin"/>
<role rolename="admin-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="admin-gui,admin,manager-gui,manager,manager-script"/>
配置本机外可访问管理页面
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
URIEncoding="UTF-8"
指定webapp目录外的可访问的文件
方法1:conf/server.xml
<Context path="/hello" docBase="c:/mydsadf"/>
方法2:conf/catalina/localhost/myxml.xml
context放置进来< Context docBase="c:/mydsadf"/>
访问方式http://localhsot:8080/myxml/
web.xml
< welcome-file-list>
< welcome-file>index.html< /welcome-file>
< /welcome-file-list>
server.xml
<host name="www.baidu.com" appBase="c:/webA"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
< Context path="/" docBase="d:/webA" />
>
File f=new File("/information.xml");
这个写法是错的,空指针异常request.getParameter
返回字符串,如果表单里面是空的,就返回长度为零的字符串。原文件
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
修改成
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla,traviata" compressableMimeType="text/html,text/xml,text/javascript,application/x-javascript,application/javascript,text/css,text/plain"/>
默认http1.1是nio, 还有aio ajp bio
何为容器:
Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器。因为 Tomcat 技术先进、性能稳定且免费,所以深受 Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的 Web 应用服务器。
到目前为止,Tomcat 一直被认为是 Servlet/JSP API 的执行器,也就所谓的 Servlet 容器。然而,Tomcat并不仅仅如此,它还提供了 JNDI 和 JMX API 的实现机制。尽管如此,Tomcat 仍然还不能算是应用服务器,因为它不提供大多数 J2EE API 的支持。
很有意思的是,目前许多的应用服务器通常把 Tomcat 作为它们 Servlet 和 JSP API 的容器。由于 Tomcat允许开发者只需通过加入一行致谢,就可以把 Tomcat 嵌入到它们的应用中。遗憾的是,许多商业应用服务器并没有遵守此规则。
对于开发者来说,如果是为了寻找利用 Servlet、JSP、JNDI 和 JMX 技术来生成 Java Web 应用的话,选择Tomcat 是一个优秀的解决方案;但是为了寻找支持其他的 J2EE API,那么寻找一个应用服务器或者把 Tomcat作为应用服务器的辅助, 将是一个不错的解决方案;第三种方式是找到独立的 J2EE API 实现,然后把它们跟Tomcat 结合起来使用。虽然整合会带来相关的问题,但是这种方式是最为有效的。
Tomcat 是提供一个支持 Servlet 和 JSP 运行的容器。Servlet 和 JSP 能根据实时需要,产生动态网页内容。而对于 Web 服务器来说, Apache 仅仅支持静态网页,对于支持动态网页就会显得无能为力;Tomcat 则既能为动态网页服务,同时也能为静态网页提供支持。 尽管它没有通常的 Web 服务器快、功能也不如 Web 服务器丰富,但是 Tomcat 逐渐为支持静态内容不断扩充。大多数的 Web 服务器都是用底层语言编写如 C,利用了相应平台的特征,因此用纯 Java 编写的 Tomcat 执行速度不可能与它们相提并论。
一般来说,大的站点都是将 Tomcat 与 Apache 的结合,Apache 负责接受所有来自客户端的 HTTP 请求,然后将 Servlets 和 JSP 的请求转发给 Tomcat 来处理。Tomcat 完成处理后,将响应传回给 Apache,最后 Apache 将响应返回给客户端。
一个简单项目, 就是index.jsp 里面放了个 Hello 字符串 经过对比 8.5.29 jetty 9.2 启动时间 jetty花费时间是Tomcat2倍 启动后内存 Jetty480M Tomcat300M 1000并发 20000总量 Tomcat涨到 460M 第二次480M 连续5次后上660M了 10次900M 最长时间时而220ms 时而 70ms Jetty涨到770M 第二次压测直接上900M了 十次后也是900M 最长响应时间稳定在 220ms