当应用程序部署为后台服务(jar)时,spring-boot提供静态内容

时间:2018-09-30 15:56:27

标签: java spring spring-boot init.d

使用spring-boot提供静态内容时遇到问题。

我已将静态内容配置为通过 application.properties 文件提供,如下所示:

static-location-path=/opt/myapp/static
spring.resources.static-locations=file:${static-location-path}/

请注意,它在jar文件之外。现在,如果我像这样使用mvn spring-boot插件启动应用程序:

mvn spring-boot:run -Drun.profiles=staging

然后可以正确提供静态文件,我可以访问它们。

但是我不想在登台环境中像这样运行我的应用程序,而是作为一种服务,可以在服务器启动时自动启动。 因此,我设法将应用程序构建为可执行jar。然后,我设法将其作为init.d服务启动。该应用程序在其他方面可以正常运行,但是不能再提供静态文件。我检查了一下,应该在此处正确加载正确的配置文件(确定应该使用哪个application.properties文件)。

主要问题是:当应用程序作为init.d服务(jar)启动并且我正在使用application.properties配置提供静态内容时,如何通过spring-boot提供静态内容?

也许有些我在这里不明白。与此相关的补充问题是:

  1. jar中是否还捆绑了不同的application.properties文件(在resources文件夹下)?那意味着应该找到它们,应用程序将从那里获取正确的配置值?

  2. 当应用程序打包为jar并作为init.d服务启动时,spring-boot可以完全提供静态内容吗?

  3. 如何进一步调试问题?我知道应用程序日志的写入位置,因此至少可以帮助到一些人。

1 个答案:

答案 0 :(得分:0)

此问题已解决。静态内容文件夹和文件不属于用于运行服务的用户所有,因此用户无权访问它们。太糟糕了,收到的错误尚不清楚(404),而不是某些权限错误。