通过EmbeddedServletContainerCustomizer接口调优Tomcat
通过EmbeddedServletContainerCustomizer接口调优Tomcat
摘要: 通过在application.properties设置对应的key-value对,可以配置Spring Boot应用程序的很多特性,例如POST、SSL、MySQL等等。如果需要更加复杂的调优,则可以利用Spring Boot提供的EmbeddedServletContainerCustomizer接口通过编程方式和修改配置信息。
通过在application.properties设置对应的key-value对,可以配置Spring Boot应用程序的很多特性,例如POST、SSL、MySQL等等。如果需要更加复杂的调优,则可以利用Spring Boot提供的EmbeddedServletContainerCustomizer接口通过编程方式和修改配置信息。
尽管可以通过application.properties设置server.session-timeout属性来配置服务器的会话超时时间,这里我们用EmbeddedServletContainerCustomizer接口修改,来说明该接口的用法。
How Do
假设我们希望设置会话的超时时间为1分钟。在WebConfiguration类中增加EmbeddedServletContainerCustomizer类型的spring bean,代码如下:
@Beanpublic EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer() { return new EmbeddedServletContainerCustomizer() { @Override public void customize(ConfigurableEmbeddedServletContainer container) {container.setSessionTimeout(1, TimeUnit.MINUTES);}};
}
在BookController中添加一个getSessionId(HttpServletRequest request)函数,直接返回request.getSession().getId()。
@RequestMapping(value = "/session", method = RequestMethod.GET)
public String getSessionId(HttpServletRequest request) { return request.getSession().getId();
}
通过
mvn spring-boot:run
启动应用通过postman访问
http://localhost:8080/books/session
,得到的结果如下
获取session
1分钟以后再次调用这个接口,则发现返回的session id已经改变。
分析
除了可以使用上面这个写法,对于使用Java 8的开发人员,还可以使用lambda表达式处理,就不需要创建一个EmbeddedServletContainerCustomizer实例了。代码如下:
//对于Java 8来说可以用lambda表达式,而不需要创建该接口的一个实例.@Beanpublic EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer() { return (ConfigurableEmbeddedServletContainer container) -> {container.setSessionTimeout(1, TimeUnit.MINUTES);};
}
在程序启动阶段,Spring Boot检测到custoimer实例的存在,然后就会调用invoke(...)方法,并向内传递一个servlet对象的实例。在我们这个例子中,实际上传入的是TomcatEmbeddedServletContainerFactory容器对象,但是如果使用Jutty或者Undertow容器,就会用对应的容器对象。
转载于:https://blog.51cto.com/17099933344/1932881
通过EmbeddedServletContainerCustomizer接口调优Tomcat相关推荐
- JVM调优:Tomcat Context reloadabled与OutOfMemory(PermSpace)
转载自:http://ayufox.iteye.com/blog/646125 我们知道,Sun JVM分代垃圾回收器把堆空间分成3块: Young Gen:年轻代,包括1个Eden区和2个Suviv ...
- Tomcat(五):Tomcat 参数调优教程
TIPS 本文基于Tomcat 9.0编写,理论兼容Tomcat 8.x及更高版本. 本文来探讨Tomcat的调优. Tomcat调优参数 主要调优参数 在做Tomcat的调优时,最重要是就是Conn ...
- 服务器优化:Tomcat、JVM性能调优笔记
找到Tomcat根目录下的conf目录,修改server.xml文件的内容.对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomcat初始化时创建的线程数的设置,当然还 ...
- 【tomcat】6、调优
系列文章目录:https://blog.csdn.net/hancoder/category_10106944.html 0 sevlet的知识,从上面目录中找 1 tomcat的安装与目录结构:ht ...
- tomcat优化(五)tomcat调优
Tomcat 调优大致分为两大类: 1.Tomcat 的自身调优: 采用动静分离节约 Tomcat 的性能 禁用 AJP 连接器 调整 Tomcat 的线程池 调整 Tomcat 的连接器 修改 To ...
- Tomcat配置与调优
Tomcat集群 Session复制配置方法 在Tomcat的conf/server.xml 配置如下: <Cluster className="org.apache.catalina ...
- Tomcat 调优的技巧
描述 最近在补充自己的短板,刚好整理到Tomcat调优这块,基本上面试必问,于是就花了点时间去搜集一下tomcat调优 都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用到时候再来补充记录, ...
- Tomcat调优教程
TIPS 本文基于Tomcat 9.0编写,理论兼容Tomcat 8.x及更高版本. Tomcat调优参数 主要调优参数 在做Tomcat的调优时,最重要是就是Connector(连接器)的调优了(少 ...
- Tomcat调优技巧,实用
人工智能,零基础入门!http://www.captainbed.net/inner 一.描述 最近,在学习接触到一些项目开发中的调优过程,刚好整理到 Tomcat 调优这块,有时候面试也会问到问,于 ...
最新文章
- 【小松教你手游开发】【unity实用技能】计算目标物体是否在自己的扇形视野范围...
- NOI2014 动物园
- SAP CRM text table DB update
- SaeStorage使用示例
- poj doubles_余数运算符在Java中用于Doubles
- C++面试 语言基础
- bash shell sed 获取第一行_老司机给出的关于 shell 脚本的8个建议,必收!
- FCC算法题--Validate US Telephone Numbers
- 【事件驱动】【数码管识别】(C++动态链接库的封装和调用)
- SQL2005的SSMS连接SQL2012会有问题
- 任务接单平台源码自动挂机阅读文章挣钱系统
- Excel 通过 CONCATENATE 函数生成SQL
- Yolov1 + Yolov2 + Yolov3 发展史、论文、代码最全资源分享合集 ! ! !
- 蓝牙调试工具如何使用_更新:使用此有价值的工具改进您的蓝牙项目
- Mybatis使用order by语句
- java中集合的概念
- 第四天 游戏策划学习
- win10 搭建PHP + Apache + MySQL运行环境
- The Annotated Transformer(解读Transformer)
- 诗词格律[4] 古体诗
热门文章
- 查看Linux下端口被哪个程序占用
- 这几年养成的几个比较好的工作习惯
- bzoj 1878: [SDOI2009]HH的项链 ——树状数组+ 差分
- yii2 Rbac使用yii命令一键建表
- eclipse fat jar 打包插件
- Javascript事件模型系列(一)事件及事件的三种模型
- Gentoo下cacti的安装
- http请求/相应及如何在chrome中查看
- Java并发编程中级篇(二):使用Semaphore信号量进行多个资源并发控制
- C++两种单例(饿汉式,懒汉式)