很多朋友对于聊一聊如何SpringBoot外置Tomcat-springboot 外置tomcat和不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
我在部署我的开源项目的后端代码时,一直都是以jar包的形式使用。一开始我觉得挺好的,也很方便。不过这几天后端代码变动频繁。打包成jar包后,每次更新都需要到服务器上。停止旧服务太麻烦了。
项目配置配置包管理文件!--打包格式为war--packagingwar/packaging排除内置tomcat打包的时候会默认打包内置的tomcat,这就造成了冲突问题,所以这里需要排除内置的-合而为一。在依赖项标签下添加以下依赖项。
!--将war包打包到tomcat时,自动排除内置的tomcat,避免两者冲突--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-tomcat/artifactId!--不需要包装时将其包括在内。将提供其他设施。其实这种依赖理论上是可以参与编译、测试、运行等循环的。相当于compile,但是exclude操作是在打包阶段——scopeprovided/scope/dependency进行的。这里的另一种方法是在spring-boot-starter-web 依赖项中排除tomcat。这样就将websocket关联起来了。该包也被排除,你的项目中的websocket也无法使用。需要手动引入javax.websocket-api依赖。此依赖项上次更新于2016 年,因此不建议使用此方法。
websocket相关由于使用了外置tomcat,所以原来使用内置tomcat配置的东西是可以删除的(当然不删除也可以,但是为了代码最好删除标准)。我这里删除的内容如下:
pom.xml中的依赖项!--添加websocket支持--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactId/dependencywebsocket启动配置,代码如下packagecom.lk.config;importorg.springframework.context。 annotation .Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.socket.server.standard.ServerEndpointExporter;/***websocket启动配置*/@ConfigurationpublicclassWebSocketConfig{@BeanpublicServerEndpointExporterserverEndpointExporter(){returnnewServerEndpointExporter();} }设置打包名与路径如果不设置名称和路径,默认的打包名称会附带版本号。打包路径在当前项目的目标目录下。我们可以在pom.xml中的build标签下进行自定义。代码如下:
!--打包目录--目录/目录!--打包时的文件名--finalName/finalName
修改启动类接下来我们修改SpringBoot启动类,继承SpringBootServletInitializer,重写configure方法,并告诉它我们使用的是外部Tomcat。代码如下:
@SpringBootApplicationpublicclassChatSystemServerApplicationextendsSpringBootServletInitializer{//外部tomcat需要继承SpringBootServletInitializer并重写SpringApplicationBuilder@OverrideprotectedSpringApplicationBuilderconfigure(SpringApplicationBuilderapplication){returnapplication.sources(ChatSystemServerApplication.class);}publicstaticvoidmain(String[]args){Spring Application.run(ChatSystemServerApplication.class,args); }} 至此,我们的项目配置部分就完成了。我们刷新pom.xml文件,点击idea的maven工具栏上的clean,然后点击package,在目标目录下创建一个war包。
tomcat配置我的项目启用了https。使用外部tomcat后,application.yml中配置的https失效。我们需要在tomcat中重新配置一下。
启用https访问
我们打开tomcat的conf目录下的server.xml,在Service标签中找到名为Catalina的标签,修改port和redirectPort属性。代码如下:
然后,在上述标签后添加以下代码,允许访问非80端口跳转到443端口
配置SSL证书将域名证书文件server.jks和keystorePass.txt文件放置在conf目录下,并在server.xml中名为Catalina的Service标签中添加以下代码。
!--配置SSL证书--Connectorport='443'protocol='org.apache.coyote.http11.Http11NioProtocol'maxThreads='150'SSLEnabled='true'SSLHostConfigCertificatecertificateKeystoreFile='conf/server.jks'certificateKeystorePassword=''type='RSA'//SSLHostConfig/连接器
certificateKeystoreFile是你的证书文件,certificateKeystorePassword是你的证书文件密码,这个密码在keystorePass.txt文件中
配置路径访问将war包放入tomcat的webapps目录后,想询问是否需要带上项目名。如果我们不需要添加项目名就可以直接访问我们的项目,那么我们需要单独进行配置。
在server.xml 文件中,找到该标签并向其添加Context 标签。代码如下:
!--配置路径访问--Contextpath=''docBase=''/Context
如果path:留空,则表示域名的根目录,docBase是你的war包所在目录。
设置默认首页由于我们修改了tomcat的默认访问页面,所有根目录访问都不会去ROOT目录下的页面。这时候我们就需要在项目中配置一个根目录映射,让它跳转到我们指定的那个位置。项目内ststic中的页面有以下代码:
//默认首页映射@ControllerpublicclassDefaultController{@RequestMapping('/')publicStringWelcome(){return'forward:index.html';}}
关于聊一聊如何SpringBoot外置Tomcat-springboot 外置tomcat,的介绍到此结束,希望对大家有所帮助。
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/7881.html
用户评论
我想问问,SpringBoot外置Tomcat和内嵌的区别在哪?
有12位网友表示赞同!
我正在学习SpringBoot,听说是可以配置使用外部Tomcat的,是真的吗?
有10位网友表示赞同!
有人分享过SpringBoot外置Tomcat部署流程吗?感觉看着文档有点懵圈。
有14位网友表示赞同!
什么时候我应该选择外置Tomcat呢?性能还是其他因素更重要?
有5位网友表示赞同!
有哪些通用的框架或者工具可以帮助进行SpringBoot和Tomcat的整合?
有8位网友表示赞同!
外置Tomcat会不会带来一些额外的维护成本?
有7位网友表示赞同!
想知道搭建SpringBoot外置Tomcat有什么需要注意的地方?
有18位网友表示赞同!
有没有什么比较成熟稳定的外置Tomcat部署方案可以推荐?
有11位网友表示赞同!
使用Apache Tomcat作为Web应用服务器,需要配置哪些必要的参数?
有16位网友表示赞同!
SpringBoot和Spring Boot Web的差异在哪里?它们是否都可以与Tomcat整合?
有9位网友表示赞同!
请问SpringBoot外置Tomcat部署之后,如何进行测试和调试?
有11位网友表示赞同!
使用外部Tomcat之后,监控和日志管理会发生哪些变化吗?
有16位网友表示赞同!
有什么方法可以更方便地配置SpringBoot和Tomcat之间的通信?
有18位网友表示赞同!
SpringBoot外置Tomcat的部署方案对不同的项目场景适用吗?例如高并发场景?
有10位网友表示赞同!
除了Apache Tomcat之外,还有其他的Java应用服务器可以选择吗?
有14位网友表示赞同!
SpringBoot外置Tomcat是否适用于使用Kubernetes等容器化技术的环境?
有16位网友表示赞同!
有没有什么在线平台或者教程可以学习SpringBoot外置Tomcat的最佳实践?
有9位网友表示赞同!
关于SpringBoot外置Tomcat的安全性问题,有哪些需要特别关注的地方?
有7位网友表示赞同!
如果公司已经有成熟的Tomcat部署环境,该如何将SpringBoot项目整合进来?
有19位网友表示赞同!