(WAR)找不到Spring Boot Admin自定义视图。

问题描述 投票:0回答:1

一旦以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。

spring-boot customization war spring-boot-admin
1个回答
0
投票

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。就这样。

© www.soinside.com 2019 - 2024. All rights reserved.