在我开始之前,我会说,我已经看到类似的问题Servlet's service and init method are being called, but not doGet 但这种帮助我很多。 这里需要注意的是,我的servlet类扩展为com.netflix.zuul.http.ZuulServlet(它具有特定原因的路由选择)和服务方法我打电话给super.service(servletRequest,servletResponse);。当我做了http调用,我看到我的service()方法被调用,但是doGet()方法没有被调用,但是在响应中我得到一个没有任何机构的“HTTP/1.1 200 OK”,这当然是我的doGet()方法不发送。以下是我的代码片段。Servlet的服务和初始化方法正在调用,但不是doGet,而我正在扩展ZuulServlet
public class SpiderHealthServlet extends ZuulServlet {
@Override
public void init() throws ServletException {
super.init();
logger.info("SpiderHealthServlet called ");
message = "pong";
}
@Override
public void service(ServletRequest servletRequest,
ServletResponse servletResponse) throws ServletException, IOException {
logger.info("SpiderHealthServlet service called ");
try {
RequestContext.getCurrentContext().set("health", true);
super.service(servletRequest,servletResponse);
} finally {
logger.info("SpiderHealthServlet service done ");
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
logger.info("SpiderHealthServlet doGet called ");
// Set response content type
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<h1>" + message + "</h1>");
resp.setStatus(HttpServletResponse.SC_OK);
}
}
将不胜感激,如果任何人都可以帮助我弄清楚我在哪里做错了。
我写了一个新的servlet,它扩展了HttpServlet而不是ZuulServlet,它为我完成了这项工作 – RIPAN