티스토리 뷰

기존에 web.xml에서 설정하던 session timeout 설정이 web.xml 파일이 없어짐에 따라 이 설정을 application.yml (or application.properties) 파일에서 해야한다. 

AS-IS (web.xml)

<session-config>
    <session-timeout>60</session-timeout>
</session-config>

TO-BE (application.yml)

server:
  servlet:
    session:
      timeout: 1800

위와 같이 매우 간단하게 적용할 수 있다. 뒤에 단위를 안붙이면 기본 시간의 단위는 초(s) 이다. (1800초면 30분)

단위를 붙여서 1800 대신 30m, 1800s 와같이 표현할수도 있다. 

 

springboot version 1.x 에서는 server.session.timeout 을 사용하고

springboot version 2.x 에서는 위와 같이 server.servlet.session.timeout을 사용하면 된다. 

 

 

간혹가다 springboot로 app을 개발하고 이걸 내장 tomcat을 사용하지 않고 별도의 WAS에 deploy해서 기동시키는 경우가 있는데 이경우는 위의 설정으로는 session timeout이 동작하지 않는다. 이럴 경우에는 별도의 listener를 만들어서 session timeout이 동작하도록 해줘야 한다. 

SessionListener.java

public class SessionListener implements HttpSessionListener {
    
    @Value("${server.servlet.session.timeout}")
    private int sessionTime;
    
    public void sessionCreated(HttpSessionEvent se) {
        se.getSession().setMaxInactiveInterval(sessionTime);
    }

    public void sessionDestroyed(HttpSessionEvent se) {
    }
}

 

Application.java (springboot main class)

@SpringBootApplication
public class Application extends SpringBootServletInitializer{
    public static void main(String[] args) {
    	SpringApplicationBuilder springApplicationBuilder = new SpringApplicationBuilder(Application.class);
        SpringApplication springApplication = springApplicationBuilder.build();
        springApplication.run(args);
    }
    
    @Bean
    public HttpSessionListener httpSessionListener(){
      return new SessionListener();
   }
}

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
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