一旦以WAR的形式部署到Tomcat中,我的自定义SBA仪表盘就会在显示自定义视图时失败,该视图最初在JAR中做得很好(但现在也失败了)。
这就是所在的扩展目录进入WAR:WEB-INFclassesMETA-INFspring-boot-admin-server-uiextensions的位置。习俗...
REM:我也定制了登录页面,我的图片位于WEB-INFclassesMETA-INFspring-boot-admin-server-uiassetsimg,所以我猜测classpath不是问题。
不过,我还是在Web浏览器的控制台中发现了一个错误。GET http://xx.xx.xx.xx:8080/extensions/customz/css/custom.fb3a4f29.css net::ERR_ABORTED 404
根据我的上下文路径,正确的路径应该是那条: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>
但我想不出如何在这种情况下改变我的视图的基本路径。我应该只需要在系统前加上我的 "customzdashboard "的上下文路径(?
有人知道如何摆脱这个陷阱吗?
NB: Spring Boot 2.2.8, Spring Cloud Hoxton.SR5, SBA 2.2.3, Tomcat 9.0.36。
AdminServerUiAutoConfiguration
声明扩展的资源处理程序(将context-pathextensions**映射到上面的classpath,当我之前试图可视化自定义JS和CSS的时候就发现了。记得spring.boot.admin.ui.extension-resource-locations默认是classpath:META-INFspring-boot-admin-server-uiextensions,这在我的情况下似乎没有问题。这证实了自定义视图是正确暴露的,所以这就导致了spring-boot-admin-server-ui.extension.resource-locations默认为classpath:META-INFspring-boot-admin-server-uiextension,这在我的情况下似乎没有问题。
所以这就导致了spring-boot-admin-server-uisrcmainfrontendindex.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克隆SBA上的tag 2.2.3,做了修改和Maven安装,把我的服务器的父节点改成SNAPSHOT,然后把WAR重建到Tomcat。就这样。