Standardmäßig läuft Togglz Admin-Konsole auf Anwendung Port (konfiguriert von server.port
Eigenschaft). Ich möchte es auf management.port
aussetzen. Meine Frage: Ist das möglich?Expose Toggz Admin-Konsole in Spring Boot auf Management-Port
3
A
Antwort
3
Wenn Sie Togglz> = 2.4.0 verwenden, ist diese Funktion sofort verfügbar.
Für ältere Versionen Lösung ist unten:
ich durch Umwickeln mit MvcEndpoint
ein rohes Servlet auf management.port
belichten verwaltet. Der einfachste Weg, es zu tun Frühling Cloud-Modul zu verwenden, die den Job alles für Dich erledigt (zB im HystrixStreamEndpoint):
public class HystrixStreamEndpoint extends ServletWrappingEndpoint {
public HystrixStreamEndpoint() {
super(HystrixMetricsStreamServlet.class, "hystrixStream", "/hystrix.stream",
true, true);
}
}
Im Fall von TogglzConsoleServlet
es leider noch ein Hack mit Pfad des aufgrund zu tun auf die Art und Weise extrahiert er Präfix von Anforderungs-URI, so dass die gesamte Lösung ein wenig hässlich aussieht:
@Component
class TogglzConsoleEndpoint implements MvcEndpoint {
private static final String ADMIN_CONSOLE_URL = "/togglz-console";
private final TogglzConsoleServlet togglzConsoleServlet;
@Autowired
TogglzConsoleEndpoint(final ServletContext servletContext) throws ServletException {
this.togglzConsoleServlet = new TogglzConsoleServlet();
togglzConsoleServlet.init(new DelegatingServletConfig(servletContext));
}
@Override
public String getPath() {
return ADMIN_CONSOLE_URL;
}
@Override
public boolean isSensitive() {
return true;
}
@Override
public Class<? extends Endpoint> getEndpointType() {
return null;
}
@RequestMapping("**")
public ModelAndView handle(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpServletRequestWrapper requestWrapper = new HttpServletRequestWrapper(request) {
@Override
public String getServletPath() {
return ADMIN_CONSOLE_URL;
}
};
togglzConsoleServlet.service(requestWrapper, response);
return null;
}
private class DelegatingServletConfig implements ServletConfig {
private final ServletContext servletContext;
DelegatingServletConfig(final ServletContext servletContext) {
this.servletContext = servletContext;
}
@Override
public String getServletName() {
return TogglzConsoleEndpoint.this.togglzConsoleServlet.getServletName();
}
@Override
public ServletContext getServletContext() {
return servletContext;
}
@Override
public String getInitParameter(final String name) {
return servletContext.getInitParameter(name);
}
@Override
public Enumeration<String> getInitParameterNames() {
return servletContext.getInitParameterNames();
}
}
}
Verwandte Themen
- 1. Fehler beim Bereitstellen von Toggz Spring Boot auf Tomcat
- 2. Spring Boot Hibernate Constraint Validator
- 3. Spring Boot Actuator ohne Spring Boot
- 4. Expose enums mit Spring Data REST
- 5. Liberty Spring Boot und Spring Boot
- 6. Expose Ressourcen mit Spring eingebettet tomcat (.jar)
- 7. Spring Boot mit MongoDB auf Docker
- 8. Wie in Spring-Boot-
- 9. Spring-Boot & Spring-Security-Konfiguration
- 10. Spring Boot Statische Ressourcen
- 11. Spring Boot - Token Authentifizierung
- 12. Spring Boot devtools IntelliJ
- 13. Spring Boot Krieg log4j2
- 14. Spring Boot + GRPC Http2Exception
- 15. Spring Boot begrenzte Autokonfiguration
- 16. Spring Boot alternative Indexseite
- 17. Spring Boot @EnableScheduling bedingt
- 18. Spring Boot Multiple Starter's
- 19. Spring Boot externe Konfiguration
- 20. Spring Boot Health Bericht auf HTML-Seite
- 21. Spring Boot ohne Datenbank
- 22. Spring Boot mit Liferay
- 23. Spring Boot Basic
- 24. Spring BOOT Ressourcen
- 25. WebSocket, Authentifizierung in Spring Boot
- 26. Spring Boot Log in Datei
- 27. Stateless Sitzung in Spring Boot
- 28. Spring Boot Security: Zugriff auf neues PDF
- 29. Spring Boot addResourceHandlers funktioniert nicht auf Linux
- 30. Zugriff auf Eigenschaftendatei im Spring Boot
Für zukünftige Besucher: dies umgesetzt wurde: https://github.com/togglz/togglz/issues/190 und wird in '2.4.0' RC verfügbar sein – justderb