网站首页 > 技术文章 正文
嵌入式与普通部署区别
最早期的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 大厂都在玩的容器技术到底是什么?
- 11-22win11怎么把小组件放到桌面(win11添加小组件)
- 11-22ppt下载(ppt下载网站有哪些)
- 11-22哪种u盘启动盘制作工具好(u盘启动盘制作工具软件哪个纯净)
- 11-22电脑上如何调出地址栏(电脑地址栏在哪里输入)
- 11-22固态硬盘分区格式(固态硬盘分区格式化很慢)
- 11-22qq邮箱怎么弄(qq邮箱怎么弄电子邮件)
- 11-22空调维修服务(大金空调维修服务)
- 11-22最新五笔输入法是哪一个版本
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (77)
- vector线程安全吗 (73)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)
