Spring Boot嵌入式Tomcat能否访问定义的spring.tomcat.basedir的webapps文件夹

Posted

技术标签:

【中文标题】Spring Boot嵌入式Tomcat能否访问定义的spring.tomcat.basedir的webapps文件夹【英文标题】:Can Spring Boot embedded Tomcat access webapps folder of defined spring.tomcat.basedir 【发布时间】:2019-07-12 21:03:28 【问题描述】:

计划使用嵌入式 Tomcat 部署 Spring Boot JAR 应用程序。正如application.properties 所见,我已经定义了一些Tomcat 参数。我的问题是我可以访问基本目录的 webapps 文件夹以使用 Angular 为前端元素提供服务,就好像我将应用程序部署为 WAR 一样?访问日志按预期工作。

应用程序.properties

server.tomcat.basedir=c:/servers/instances/app_dep/
server.tomcat.uri-encoding=UTF-8
server.tomcat.accesslog.directory=c:/servers/instances/app_dep/logs
server.tomcat.accesslog.enabled=true

服务器环境 Windows Server Apache 2.4 Tomcat 9

webapps 路径 - c:/servers/instances/app_dep/webapps/app_name

我已经为 Apache 2.4 配置了 mod_jk,因此我可以使用 IP_ADDRESS/app_name 访问端点

【问题讨论】:

【参考方案1】:

不,Spring Boot 中配置的嵌入式 Tomcat 不会监视 webapps 文件夹,也不会部署复制到那里的 war 文件。

如果您想从 Spring Boot 应用程序中提供静态内容,那么一种选择是将该内容打包到您的 jar 文件中。默认情况下,src/main/resources/static 中的任何内容都将打包到 jar 文件中的某个位置,以便通过 HTTP 访问。例如,一个名为src/main/resources/static/css/style.css 的文件将被打包在BOOT-INF/classes/static/css/style.css 中,并且可以通过/css/style.css 上的HTTP 访问。

【讨论】:

以上是关于Spring Boot嵌入式Tomcat能否访问定义的spring.tomcat.basedir的webapps文件夹的主要内容,如果未能解决你的问题,请参考以下文章

你如何告诉 Spring Boot 将嵌入式 Tomcat 的访问日志发送到标准输出?

带有嵌入式tomcat的Spring Boot应用程序,将访问日志发送到syslog

带有嵌入式 Tomcat 的 Spring Boot 忽略了方法角色

如何在 Spring Boot 应用程序中将用户添加到嵌入式 tomcat?

Spring Boot 嵌入式 Tomcat 文件上传url 映射虚拟路径

Spring Boot中嵌入式Servlet容器的比较