应用切换web容器
由于Hzero底层是spring cloud,切换web容器的方式与spring boot应用一致,仅需在应用中移除默认web容器(HZERO服务默认使用undertow)后,依赖想要的web容器,并加入对应web容器的相关配置即可。
依赖调整
以hzero-admin服务为例,切换为jetty容器,原pom文件中的依赖如下:
<dependency>
<groupId>org.hzero</groupId>
<artifactId>hzero-admin-saas</artifactId>
</dependency>
通过exclude的方式排除默认的undertow容器,并引入jetty容器后依赖如下:
<dependency>
<groupId>org.hzero</groupId>
<artifactId>hzero-admin-saas</artifactId>
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</exclude>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
spring boot中三个常见web容器的依赖坐标如下:
<!-- undertow 容器依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
<!-- jetty 容器依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<!-- tomcat 容器依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
相关配置介绍
undertow配置介绍
server:
undertow:
# 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接
# 默认值为8,建议设置每个CPU核心一个线程
io-threads: ${SERVER_UNDERTOW_IO_THREADS:4}
# 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程
# 默认等于 io-threads*8,它的值设置取决于系统的负载,可适当调大该值
worker-threads: ${SERVER_UNDERTOW_WORKER_THREADS:128}
# 每块buffer的空间大小,越小空间被利用越充分
# 不要设置太大,以免影响其他应用,合适即可
buffer-size: ${SERVER_UNDERTOW_BUFFER_SIZE:1024}
# 是否分配的直接内存(NIO直接分配的堆外内存)
# 默认false
direct-buffers: true
# HTTP POST请求最大的大小
# 默认0,无限制,可设置10M
max-http-post-size: 10485760
allow-unescaped-characters-in-url: true
jetty配置介绍
server:
jetty:
# HTTP post/put 内容字节限制值
max-http-post-size: ${SERVER_JETTY_MAX_HTTP_POST_SIZE:200000}
# 接受器线程数,-1表示由操作环境决定
acceptors: ${SERVER_JETTY_ACCEPTORS:-1}
# 选择器线程数,-1表示由操作环境决定
selectors: ${SERVER_JETTY_SELECTORS:-1}
tomcat配置介绍
server:
tomcat:
# 允许的代理ip的正则表达式
#internal-proxies:
# 协议头,通常为X-Forwarded-Proto
protocol-header: X-Forwarded-Proto
# 当协议头为xxx值时,认为需要使用ssl,通常为https
protocol-header-https-value: https
# 端口头,通常为X-Forwarded-Port
port-header: X-Forwarded-Port
# 远程ip头,通常为X-Forwarded-For
remote-ip-header: X-Forwarded-For
# tomcat基本目录,不指定时使用临时文件夹
#basedir:
# 后台处理器的延时时长,默认为10s
background-processor-delay: 10s
# 工作线程的最大数量,默认200
max-threads: ${SERVER_TOMCAT_MAX_THREADS:200}
# 工作线程的最小数量,默认10
min-spare-threads: 10
# HTTP post请求内容字节限制,默认2097152
max-http-post-size: ${SERVER_TOMCAT_MAX_HTTP_POST_SIZE:2097152}
# HTTP 请求头字节限制,默认0,表示使用web容器的默认限制值
max-http-header-size: 0
# 是否要对重定向到上下文根的请求路径上添加/,默认true
redirect-context-root: true
# 重定向是否使用相对路径
#use-relative-redirects: false
# URI的解码字符集
uri-encoding: UTF-8
# 最大连接数,当连接数达到限制,请求会被阻塞到队列,队列大小由accept-count属性决定
max-connections: ${SERVER_TOMCAT_MAX_CONNECTIONS:10000}
# 阻塞队列大小
accept-count: ${SERVER_TOMCAT_ACCEPT_COUNT:100}
# 使得TLD扫描忽略的正则表达式列表
#additional-tld-skip-patterns:
# 静态资源配置
#resource:
# 静态资源缓存的存活时间,超时清除
#cache-ttl: