3
기본적으로 Togglz 관리 콘솔은 응용 프로그램 포트 (server.port
속성으로 구성)에서 실행됩니다. management.port
에 공개하고 싶습니다. 내 질문 : 가능합니까?Spring에서 Toggle 관리 콘솔 공개 관리 포트에서 부팅
기본적으로 Togglz 관리 콘솔은 응용 프로그램 포트 (server.port
속성으로 구성)에서 실행됩니다. management.port
에 공개하고 싶습니다. 내 질문 : 가능합니까?Spring에서 Toggle 관리 콘솔 공개 관리 포트에서 부팅
Togglz> = 2.4.0을 사용하면이 기능을 사용할 수 있습니다. 이전 릴리스 솔루션에 대한
은 다음과 같습니다 : 나는 MvcEndpoint
로 포장하여 management.port
에 원시 서블릿을 노출 관리
. 경로의 때문에 함께 할 수있는 또 하나의 해킹 불행하게도이 TogglzConsoleServlet
의 경우
public class HystrixStreamEndpoint extends ServletWrappingEndpoint {
public HystrixStreamEndpoint() {
super(HystrixMetricsStreamServlet.class, "hystrixStream", "/hystrix.stream",
true, true);
}
}
: 가장 쉬운 방법은합니다 (HystrixStreamEndpoint 예를 들면) 당신을 위해 모든 일을 봄 클라우드 모듈을 사용하도록 할 수 있습니다 미래의 방문자를위한
@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();
}
}
}
: 방법으로는 전체 솔루션 조금 못생긴 비트 보이는, 그래서 요청 URI에서 접두사를 추출이 구현되었습니다 : https://github.com/togglz/togglz/issues/190 '2.4.0' RC에서 사용할 수 있습니다. – justderb