网站首页 > 技术文章 正文
嵌入式与普通部署区别
最早期的web 服务,将打好的war包放在web容器的目录下,如Tomcat 是放在webapps.但spring boot 的嵌入式,是通过
ServletWebServerApplicationContext,注册上下文,引导 tomcat 启动。
tomcat
spring boot web 依赖默认依赖 tomcat。
tomcat 配置. 实现 https,http 方式
生成密钥的方式
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
实现实例
public class CustomServletContainer implements 实现WebServerFactoryCustomizer <configurablewebserverfactory> { /**~~~~ * * @param factory */ @Override public void customize(ConfigurableWebServerFactory factory) { factory.setPort(8082); } @Bean public ServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory(); tomcat.addAdditionalTomcatConnectors(createStandardConnector()); return tomcat; } private Connector createSslConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler(); try { File keystore = new ClassPathResource("keystore.p12").getFile(); File truststore = new ClassPathResource("keystore.p12").getFile(); connector.setScheme("https"); connector.setSecure(true); connector.setPort(8443); protocol.setSSLEnabled(true); protocol.setKeystoreFile(keystore.getAbsolutePath()); protocol.setKeystorePass("123456"); protocol.setKeystoreType("PKCS12"); // protocol.setTruststoreFile(truststore.getAbsolutePath()); //// protocol.setTruststorePass("password"); protocol.setKeyAlias("tomcat"); return connector; } catch (IOException ex) { throw new IllegalStateException("can't access keystore: [" + "keystore" + "] or truststore: [" + "keystore" + "]", ex); } } }
jetty
在web 中排除 tomcat
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> <exclusions> <!-- Exclude the Tomcat dependency --> <exclusion> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-tomcat</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-jetty</artifactid> </dependency>
undertow
如果undertow这个名称不熟悉,则JBoss 应该大名鼎鼎。使用方式同上
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> <exclusions> <!-- Exclude the Tomcat dependency --> <exclusion> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-tomcat</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-undertow</artifactid> </dependency>
总结
spring boot 针对 servlet web 容器,提供 jetty,undertow,tomcat支持。下面会整理 响应式web 容器的支持。在servlet 3.1中 有个重大的功能,支持 异步请求。在此基础上,Spring 5 最大的改进也是提供了 响应式编程(reactive web),很有意思.
源代码
如有帮助,关注下吆。
猜你喜欢
- 2024-09-23 Kubernetes笔记(五):了解Pod(容器组)
- 2024-09-23 一次性教你彻底理解 Spring容器和应用上下文
- 2024-09-23 互联网Web服务容器:Tomcat8解析及性能优化
- 2024-09-23 Servlet容器:在Web应用程序中的关键组件
- 2024-09-23 容器和虚拟机到底有啥区别?(容器和虚拟机利用的实现方式是一样的)
- 2024-09-23 Springboot实战实践:从基础到源码深入了解springboot(PDF版)
- 2024-09-23 1Panel docker容器版-1分钟部署 WEB在线版Telnet SSH工具sshwifty
- 2024-09-23 互联网WEB容器性能优化(web应用性能优化思路)
- 2024-09-23 Spring源码探究:容器(spring容器组成模块)
- 2024-09-23 大厂都在玩的容器技术到底是什么?
- 1514℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 569℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 511℃MySQL service启动脚本浅析(r12笔记第59天)
- 486℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 485℃启用MySQL查询缓存(mysql8.0查询缓存)
- 468℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 447℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 445℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)