Я хочу, чтобы мой сеанс был тайм-аутом через определенный промежуток времени. В web.xml я использовал код вроде:
<session-config>
<session-timeout>20</session-timeout>
</session-config>
где 20 - период ожидания в минутах, который работает правильно.
Что бы я хотел сделать, это сделать это программно, используя такой код внутри одного из моих beans, как показано ниже:
@ManagedBean(name="login")
@SessionScoped
public class MyLoginBean implements HttpSessionListener, Serializable {
// private variables etc.
HttpServletRequest request;
HttpSession session = request.getSession();
// Constructor
public MyLoginBean() {
session.setMaxInactiveInterval(1200);
}
// The rest of the code
}
где время ожидания составляет 1200 секунд, т.е. 20 минут. К сожалению, при открытии браузера для просмотра приложения он выходит из строя с сообщением:
com.sun.faces.mgbean.ManagedBeanCreationException: Cant instantiate class: com.csharp.MyLoginBean.
Далее следуют:
java.lang.NullPointerException
Что я здесь делаю неправильно? Я знаю, что setMaxInactiveInterval()
относится к определенному сеансу, который в этом случае является логином bean, а не всем, что указывает код в файле web.xml
. У меня есть несколько beans, но выбор времени входа в систему bean является единственным, что имеет значение.
Я использую JSF 2.0 с Glassfish 3.1.1 и Eclipse Indigo, поэтому некоторые советы будут очень оценены.