(WAR)Spring 未找到引导管理自定义视图
(WAR) Spring Boot Admin custom view not found
作为 WAR 部署到 Tomcat 后,我的自定义 SBA 仪表板无法显示自定义视图,该视图最初在 JAR 中表现良好(但现在也失败了,顺便说一句)
这是 WAR 中扩展目录所在的位置:
/WEB-INF/classes/META-INF/spring-boot-admin-server-ui/extensions/自定义/...
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
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 上下文路径以便保留扩展。可能是 tehe quickest 方法是相对于 index.html
中的 URls
所以我就是这么做的...git 在标签 2.2.3 上克隆 SBA,进行更改并安装 Maven,将服务器的父级更改为 SNAPSHOT,然后重新 uilding WAR 变成 Tomcat。 Et voilà.
作为 WAR 部署到 Tomcat 后,我的自定义 SBA 仪表板无法显示自定义视图,该视图最初在 JAR 中表现良好(但现在也失败了,顺便说一句)
这是 WAR 中扩展目录所在的位置: /WEB-INF/classes/META-INF/spring-boot-admin-server-ui/extensions/自定义/...
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
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 上下文路径以便保留扩展。可能是 tehe quickest 方法是相对于 index.html
中的 URls所以我就是这么做的...git 在标签 2.2.3 上克隆 SBA,进行更改并安装 Maven,将服务器的父级更改为 SNAPSHOT,然后重新 uilding WAR 变成 Tomcat。 Et voilà.