繁体   English   中英

在扩展ZuulServlet时,将调用Servlet的服务和init方法,但不会调用doGet。

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM