通过EmbeddedServletContainerCustomizer接口调优Tomcat

2024-05-26 12:20:12

通过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,得到的结果如下

1240

获取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相关推荐

  1. JVM调优:Tomcat Context reloadabled与OutOfMemory(PermSpace)

    转载自:http://ayufox.iteye.com/blog/646125 我们知道,Sun JVM分代垃圾回收器把堆空间分成3块: Young Gen:年轻代,包括1个Eden区和2个Suviv ...

  2. Tomcat(五):Tomcat 参数调优教程

    TIPS 本文基于Tomcat 9.0编写,理论兼容Tomcat 8.x及更高版本. 本文来探讨Tomcat的调优. Tomcat调优参数 主要调优参数 在做Tomcat的调优时,最重要是就是Conn ...

  3. 服务器优化:Tomcat、JVM性能调优笔记

    找到Tomcat根目录下的conf目录,修改server.xml文件的内容.对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomcat初始化时创建的线程数的设置,当然还 ...

  4. 【tomcat】6、调优

    系列文章目录:https://blog.csdn.net/hancoder/category_10106944.html 0 sevlet的知识,从上面目录中找 1 tomcat的安装与目录结构:ht ...

  5. tomcat优化(五)tomcat调优

    Tomcat 调优大致分为两大类: 1.Tomcat 的自身调优: 采用动静分离节约 Tomcat 的性能 禁用 AJP 连接器 调整 Tomcat 的线程池 调整 Tomcat 的连接器 修改 To ...

  6. Tomcat配置与调优

    Tomcat集群 Session复制配置方法 在Tomcat的conf/server.xml 配置如下: <Cluster className="org.apache.catalina ...

  7. Tomcat 调优的技巧

    描述 最近在补充自己的短板,刚好整理到Tomcat调优这块,基本上面试必问,于是就花了点时间去搜集一下tomcat调优 都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用到时候再来补充记录, ...

  8. Tomcat调优教程

    TIPS 本文基于Tomcat 9.0编写,理论兼容Tomcat 8.x及更高版本. Tomcat调优参数 主要调优参数 在做Tomcat的调优时,最重要是就是Connector(连接器)的调优了(少 ...

  9. Tomcat调优技巧,实用

    人工智能,零基础入门!http://www.captainbed.net/inner 一.描述 最近,在学习接触到一些项目开发中的调优过程,刚好整理到 Tomcat 调优这块,有时候面试也会问到问,于 ...

最新文章

  1. 【小松教你手游开发】【unity实用技能】计算目标物体是否在自己的扇形视野范围...
  2. NOI2014 动物园
  3. SAP CRM text table DB update
  4. SaeStorage使用示例
  5. poj doubles_余数运算符在Java中用于Doubles
  6. C++面试 语言基础
  7. bash shell sed 获取第一行_老司机给出的关于 shell 脚本的8个建议,必收!
  8. FCC算法题--Validate US Telephone Numbers
  9. 【事件驱动】【数码管识别】(C++动态链接库的封装和调用)
  10. SQL2005的SSMS连接SQL2012会有问题
  11. 任务接单平台源码自动挂机阅读文章挣钱系统
  12. Excel 通过 CONCATENATE 函数生成SQL
  13. Yolov1 + Yolov2 + Yolov3 发展史、论文、代码最全资源分享合集 ! ! !
  14. 蓝牙调试工具如何使用_更新:使用此有价值的工具改进您的蓝牙项目
  15. Mybatis使用order by语句
  16. java中集合的概念
  17. 第四天 游戏策划学习
  18. win10 搭建PHP + Apache + MySQL运行环境
  19. The Annotated Transformer(解读Transformer)
  20. 诗词格律[4] 古体诗

热门文章

  1. 查看Linux下端口被哪个程序占用
  2. 这几年养成的几个比较好的工作习惯
  3. bzoj 1878: [SDOI2009]HH的项链 ——树状数组+ 差分
  4. yii2 Rbac使用yii命令一键建表
  5. eclipse fat jar 打包插件
  6. Javascript事件模型系列(一)事件及事件的三种模型
  7. Gentoo下cacti的安装
  8. http请求/相应及如何在chrome中查看
  9. Java并发编程中级篇(二):使用Semaphore信号量进行多个资源并发控制
  10. C++两种单例(饿汉式,懒汉式)