先日書いた以下のエントリーですが、修正する内容が多かったので別エントリーとして書くことにしました。

Spring BootでアクティブなHTTPセッション数を取得する

まず、書き方が悪かったのですが、 今回知りたかったのは 現在捌いているリクエスト数 で、
HttpSessionの数ではありませんでした。書き方が紛らわしくてすみません><

makingさんありがとうございます。

という事で、修正しました。

 

  1. リクエスト数のカウント処理をFilterで行うように修正
  2. CounterServiceでincrement/decrementするように修正したので、Jolokiaとdecrementは不要になったから削除

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
@Configuration
public class AppConfig {

    @Autowired
    CounterService counterService;

    @Bean
    public FilterRegistrationBean filterRegistrationBean() {

        Filter filter = new Filter() {
            @Override
            public void init(FilterConfig filterConfig) throws ServletException {
            }

            @Override
            public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
                try {
                    counterService.increment("active-http-sessions");
                    filterChain.doFilter(servletRequest, servletResponse);
                } finally {
                    counterService.decrement("active-http-sessions");
                }
            }

            @Override
            public void destroy() {
            }
        };

        FilterRegistrationBean registrationBean = new FilterRegistrationBean();

        registrationBean.setFilter(filter);
        registrationBean.addUrlPatterns("/sample/api/*");

        return registrationBean;
    }
}

 

今回のサンプルソースはここに置いてます。