Вместо использования ServletContextListener, используйте HttpSessionListener . В методе sessionCreated()
вы можете установить таймаут сеанса программно.
public class MyHttpSessionListener implements HttpSessionListener{
public void sessionCreated(HttpSessionEvent event){
event.getSession().setMaxInactiveInterval(15*60); //in seconds
}
public void sessionDestroyed(HttpSessionEvent event){}
}
И не забудьте определить прослушиватель в дескрипторе развертывания:
<webapp>
...
<listener>
<listener-class>com.example.MyHttpSessionListener</listener-class>
</listener>
</webapp>
Тем не менее, я бы порекомендовал создавать разные файлы web.xml для каждого приложения и определять там время ожидания сеанса:
<webapp>
...
<session-config>
<session-timeout>15</session-timeout> <!-- in minutes -->
</session-config>
</webapp>