서블릿에서 변경할 때마다 원자 카운터를 인쇄해야하는 코드가 있습니다. 하지만 내 코드가 작동하지 않았다. 나는 그 문제가 뭔지 알 수 없다. 리스너에서 카운터의 새로운 가치를 인쇄해야합니다. 어떻게 인쇄 할 수 있습니까?ServletContextAttributeListener.attributeReplaced() 메서드가 작동하지 않습니다.
@WebServlet (description = "StartServlet", urlPatterns = {"/*"})
public class StartController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
((AtomicInteger) getServletContext().
getAttribute("ctr")).
incrementAndGet();
}
}
@WebListener
public class ContextAttributeListenerImpl implements ServletContextAttributeListener {
@Override
public void attributeReplaced(ServletContextAttributeEvent event) {
AtomicInteger c = (AtomicInteger) event.
getServletContext().
getAttribute("ctr");
System.out.println(c); // all magic must be here
}
@Override
public void attributeRemoved(ServletContextAttributeEvent event) {/*NOP*/}
@Override
public void attributeAdded(ServletContextAttributeEvent event) {/*NOP*/}
}
@WebListener
public class ContextCreationListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
AtomicInteger counter = new AtomicInteger(0);
event.getServletContext().setAttribute("ctr", counter);
}
@Override
public void contextDestroyed(ServletContextEvent event) {/*NOP*/}
}
ContextCreationListener가 작동합니까? (contextInitialized에 로그인하면 올바르게 로그합니까?) –