[英]Servlet's service and init method are being called, but not doGet while I am extending ZuulServlet
在开始之前,我想说的是,我已经看到过类似的问题,即正在调用Servlet的服务和init方法,但不是doGet,但这对我有很大帮助。 这里需要指出的是,我的servlet类扩展了com.netflix.zuul.http.ZuulServlet (出于特定原因进行路由),并且在服务方法中,我正在调用super.service(servletRequest,servletResponse); 。当我执行http get调用时,我看到调用了service()方法,但未调用doGet()方法,但是作为响应,我得到了“ HTTP / 1.1 200 OK”,而没有任何主体,这当然是我的doGet()方法不发送。 以下是我的代码段。
public class AppHealthServlet extends ZuulServlet {
@Override
public void init() throws ServletException {
super.init();
logger.info("AppHealthServlet called ");
message = "pong";
}
@Override
public void service(ServletRequest servletRequest,
ServletResponse servletResponse) throws ServletException, IOException {
logger.info("AppHealthServlet service called ");
try {
RequestContext.getCurrentContext().set("health", true);
super.service(servletRequest,servletResponse);
} finally {
logger.info("AppHealthServlet service done ");
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
logger.info("AppHealthServlet doGet called ");
// Set response content type
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<h1>" + message + "</h1>");
resp.setStatus(AppHealthServlet.SC_OK);
}
}
如果有人可以帮助我弄清楚我在哪里做错,将不胜感激。
看起来ZuulServlet
并不是要像这样使用。 如果看一下ZuulServlet.service
的源代码,它基本上ZuulRunner
所有内容交给ZuulRunner
。
在我看来,您需要考虑加入Zuul路由,而不是尝试自己扩展ZuulServlet
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.