2016-11-07 12 views
0

У меня есть пара проблем с тайм-аутом сеанса Vaadin 7. Во-первых, даже я попытался изменить heartbeatinterval на 20 секунд, Vaadin debug все еще говорит, что он находится в значении по умолчанию 300 с.Время ожидания сеанса Vaadin и ошибка связи

Другая проблема заключается в том, что я не могу получить сообщение о тайм-ауте сеанса вообще, кроме сообщения об ошибке связи. Не имеет значения, если сеанс 1 мин или 2 мин или что-то большее, чем heartbeatinterval.

Третья проблема заключается в том, что в сообщении об ошибке связи есть «недопустимый JSON-ответ от текста сервера», и я понятия не имею, как избавиться от этого.

<context-param> 
    <param-name>heartbeatInterval</param-name> 
    <param-value>20</param-value> 
</context-param> 
<context-param> 
    <param-name>closeIdleSessions</param-name> 
    <param-value>true</param-value> 
</context-param> 

Vaadin communication error with invalid JSON reponse

+0

Вы установили этот параметр? MINUTES

+0

Да. Я пробовал все от 1 мин до 5 мин только для целей тестирования. Любая идея избавиться от этого раздражающего недействительного текста ответа json. Я могу переопределить другие тексты, но не это. –

ответ

1

Вы можете переопределить эти сообщения, используя свою собственную систему сообщений класса поставщика. Я использовал это, чтобы отображать пользователей по другому URL-адресу, когда эти ошибки возникают, поэтому я могу отслеживать их в аналитике Google, но вместо этого вы можете изменить заголовок и содержимое сообщений, если хотите.

Вам понадобится SystemMessagesProvider, и в главном классе UI вам нужно добавить следующее:

VaadinService.getCurrent().setSystemMessagesProvider(new MyMessageProvider); 

И ваш SystemMessagesProvider должен выглядеть следующим образом:

import com.vaadin.server.CustomizedSystemMessages; 
import com.vaadin.server.SystemMessages; 
import com.vaadin.server.SystemMessagesInfo; 
import com.vaadin.server.SystemMessagesProvider; 

public class MyMessageProvider implements SystemMessagesProvider { 

    @Override 
    public SystemMessages getSystemMessages(SystemMessagesInfo systemMessagesInfo) { 


     CustomizedSystemMessages systemMessages = new CustomizedSystemMessages(); 

     systemMessages.setCommunicationErrorURL("/systemError?error=communicationError"); 
     systemMessages.setCommunicationErrorNotificationEnabled(false); 

     systemMessages.setInternalErrorURL("/systemError?error=internalError"); 
     systemMessages.setInternalErrorNotificationEnabled(false); 

     systemMessages.setSessionExpiredURL("/systemError?sessionTimeout"); 
     systemMessages.setSessionExpiredNotificationEnabled(false); 

     return systemMessages; 
    } 
+0

В другом проекте, который я сделал, я установил URL-адрес ошибки связи в качестве URI моего приложения, а затем, когда возникает ошибка связи, он просто перезагружает приложение. Пользователь ничего не увидит, но это будет новый VaadinSession, он работал хорошо для меня, так как мое приложение было без гражданства. –

+1

я сделал это уже. Проблема в том, что я никогда не получал текст с истекшим сроком службы, но об ошибке связи. И я решил избавиться от этого раздражающего json-текста с помощью css, потому что я до сих пор не знаю, почему он есть, и его невозможно переопределить. – Sami

 Смежные вопросы

  • Нет связанных вопросов^_^