2016-11-07 5 views
0

Vaadin 7 세션 시간 초과에 몇 가지 문제가 있습니다. 첫 번째는 heartbeatinterval을 20 초로 변경하려고 시도했지만 Vaadin 디버그는 여전히 기본값이 300 초라고 말합니다.Vaadin 세션 시간 초과 및 통신 오류

또 다른 문제점은 통신 오류 메시지가 아닌 세션 시간 초과 메시지를 얻을 수 없다는 것입니다. 세션이 1 분 또는 2 분 또는 하트 비트 간격보다 중요한지 여부는 중요하지 않습니다.

세 번째 문제점은 통신 오류 메시지에 "서버 텍스트의 잘못된 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

나는 그것을 이미했다. 문제는 세션 만료 텍스트가 없지만 통신 오류가 발생한다는 것입니다. 그리고 나는 CSS가있는 성가신 json 텍스트를 없애기로 결심했습니다. 왜냐하면 나는 왜 그것이 거기에 있고, 재정의하는 것이 불가능하기 때문입니다. – Sami