【问题标题】:(WAR) Spring Boot Admin custom view not found(WAR) 找不到 Spring Boot Admin 自定义视图
【发布时间】:2020-06-11 18:35:16
【问题描述】:

一旦作为 WAR 部署到 Tomcat 中,我的自定义 SBA 仪表板无法显示最初在 JAR 中运行良好的自定义视图(但现在它也失败了,顺便说一句)

这是扩展的目录在 WAR 中的位置: /WEB-INF/classes/META-INF/spring-boot-admin-server-ui/extensions/customz/...

REM:我还自定义了登录页面,我的图片位于 /WEB-INF/classes/META-INF/spring-boot-admin-server-ui/assets/img/ 所以我猜是类路径不是问题。

不过,我在 Web 浏览器的控制台中遇到了错误: GET http://xx.xx.xx.xx:8080/extensions/customz/css/custom.fb3a4f29.css net::ERR_ABORTED 404

REM:根据我的上下文路径,正确的路径可能应该是那个: http://xx.xx.xx.xx:8080/myapp/dashboard/extensions/customz/css/custom.fb3a4f29.css

server.servlet.context-path=/myapp
spring.boot.admin.context-path=/dashboard

...

<packaging>war</packaging>
<build>
<finalName>myapp</finalName>
...
</build>

但在这种情况下,我不知道如何更改视图的基本路径。我应该只需要在系统前面加上我的“customz/dashboard”上下文路径(?)

请问有人知道如何摆脱这个陷阱吗?

注意:Spring Boot 2.2.8、Spring Cloud Hoxton.SR5、SBA 2.2.3、Tomcat 9.0.36

【问题讨论】:

  • 今天早上我回到了 Spring Boot 2.2.7 和 Spring Cloud Hoxton.SR4,因为它是 SBA 2.2.3(Tomcat 9.0.34 附带)的基础堆栈

标签: spring-boot customization war spring-boot-admin


【解决方案1】:

AdminServerUiAutoConfiguration 为扩展声明资源处理程序(将 context-path/extensions/** 映射到上面的类路径,正如我之前尝试可视化自定义 JS 和 CSS 时发现的那样。 请记住 spring.boot.admin.ui.extension-resource-locations 默认为 classpath:/META-INF/spring-boot-admin-server-ui/extensions/ 在我的情况下似乎很好。这确认自定义视图已正确显示。

这导致我们进入 spring-boot-admin-server-ui/src/main/frontend/index.html ,其中所有路径似乎都是......绝对的!

<th:block th:each="cssExtension : ${cssExtensions}">
    <link rel="preload" th:href="'/extensions/' + ${cssExtension.resourcePath}" as="style">
</th:block>
<th:block th:each="jsExtension : ${jsExtensions}">
    <link rel="preload" th:href="'/extensions/' + ${jsExtension.resourcePath}" as="script">
</th:block>
<th:block th:each="cssExtension : ${cssExtensions}">
    <link th:href="'/extensions/' + ${cssExtension.resourcePath}" rel="stylesheet">
</th:block>
<link rel="shortcut icon" th:href="${uiSettings.favicon}" type="image/png">
<title th:text="${uiSettings.title}">Spring Boot Admin</title>
...
<script lang="javascript" src="sba-settings.js"></script>
<th:block th:each="jsExtension : ${jsExtensions}">
<script lang="javascript" th:src="'/extensions/' + ${jsExtension.resourcePath}"></script>
</th:block>

我猜想这两点应该同时添加 servlet 和 admin ui 上下文路径以保持扩展。可能是最快的方法是相对于 index.html 中的 URls

所以我确实这样做了... git 克隆标签 2.2.3 上的 SBA,进行更改并 Maven 安装它,将我的服务器的父级更改为 SNAPSHOT,然后将 WAR 重建到 Tomcat 中。等等。

【讨论】:

    猜你喜欢
    • 2016-04-16
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    相关资源
    最近更新 更多