Как установить время ожидания сеанса в Vaadin 8?
Я не использую web.xml, который использовался для установки в предыдущих версиях фреймворка.
Как установить время ожидания сеанса в Vaadin 8?
Я не использую web.xml, который использовался для установки в предыдущих версиях фреймворка.
Вы можете установить стандартный тайм-аут сеанса сервлета как int
количество полных секунд после извлечения из оболочки VaadinSession
.
VaadinSession.getCurrent().getSession().setMaxInactiveInterval ( ( int ) TimeUnit.MINUTES.toSeconds( 30 ) ) ;
Установка времени ожидания сеанса — это функция в вашем веб-контейнер, ваш механизм сервлетов, например Tomcat, Jetty и т. д. Servlet определяет это поведение для приложений Java как часть обработки сеанса.
Vaadin заключает сеанс сервлета в VaadinSession
. Поэтому извлеките обычный сеанс сервлета из Vaadin как WrappedSession
< /a>, затем вызовите setMaxInactiveInterval
для установки времени истечения срока действия.
Укажите ограничение по времени в виде целых секунд. Перечисление TimeUnit
удобно для подсчета секунд, не прибегая к "магическим" числам.
VaadinSession // Wraps a standard Servlet session.
.getCurrent() // Access the current user’s session.
.getSession() // Access the wrapped standard Servlet session.
.setMaxInactiveInterval( // Set the timeout.
( int ) // Cast a `long` to an `int`.
TimeUnit // The `TimeUnit` enum is more self-documenting than using a literal integer number.
.MINUTES // Here we set a half hour, 30 minutes.
.toSeconds( 30 ) // Set a number of whole seconds.
)
;
Вот полный пример приложения Vaadin 8.5, созданного на основе архетипа Maven vaadin-archetype-application
. Мы добавили одну строку в начало метода init
.
package com.basilbourque.example;
import javax.servlet.annotation.WebServlet;
import com.vaadin.annotations.Theme;
import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinServlet;
import com.vaadin.server.VaadinSession;
import com.vaadin.ui.Button;
import com.vaadin.ui.Label;
import com.vaadin.ui.TextField;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
import java.util.concurrent.TimeUnit;
/**
* This UI is the application entry point. A UI may either represent a browser window
* (or tab) or some part of an HTML page where a Vaadin application is embedded.
* <p>
* The UI is initialized using {@link #init(VaadinRequest)}. This method is intended to be
* overridden to add component to the user interface and initialize non-component functionality.
*/
@Theme ( "mytheme" )
public class MyUI extends UI {
@Override
protected void init ( VaadinRequest vaadinRequest ) {
// Set Session timeout programmatically. Overrides the default timeout configured for Servlet.
VaadinSession.getCurrent().getSession().setMaxInactiveInterval( ( int ) TimeUnit.MINUTES.toSeconds( 45 ) ); // Setting timeout of 45 minutes = ( 45 * 60 ) seconds.
final VerticalLayout layout = new VerticalLayout();
final TextField name = new TextField();
name.setCaption( "Type your name here:" );
Button button = new Button( "Click Me" );
button.addClickListener( e -> {
layout.addComponent( new Label( "Thanks " + name.getValue()
+ ", it works!" ) );
} );
layout.addComponents( name , button );
setContent( layout );
}
@WebServlet ( urlPatterns = "/*",
name = "MyUIServlet",
asyncSupported = true )
@VaadinServletConfiguration ( ui = MyUI.class,
productionMode = false )
public static class MyUIServlet extends VaadinServlet {
}
}
Я не использую web.xml, который использовался для установки в предыдущих версиях фреймворка.
На самом деле тайм-аут сеанса — это вещь Servlet, а не специфичная для Vaadin вещь. И web.xml
- это Servlet, а не Vaadin.
Видеть:
javax.servlet.http.HttpSession::setMaxInactiveInterval(int interval)
Подробнее обсуждается в разделе Как динамически установить время ожидания сеанса в веб-приложениях Java?.
Время ожидания сеанса задается в файле web.xml.
Если у вас его нет, то вам нужно будет его создать.
Как установить время ожидания сеанса в секундах в Интернете .xml?
Поскольку вы, кажется, используете весеннюю загрузку, это может относиться к вам
Время ожидания сеанса Spring Boot Java Config Set
VaadinSession.getCurrent().getSession().setMaxInactiveInterval(numberOfSeconds);
в своем методе init
.
- person Morfic; 12.02.2018