2016-11-07 4 views
0

私はVaadin 7セッションタイムアウトにいくつかの問題があります。まず、heartbeatintervalを20秒に変更しようとしても、Vaadinのデバッグではまだデフォルト値300秒であると言われています。Vaadinセッションタイムアウトと通信エラー

もう1つの問題は、通信エラーメッセージ以外のセッションタイムアウトメッセージを得ることができないことです。セッションが1分か2分か、それとも心拍間隔よりも重要なことはありません。

第3の問題は、通信エラーメッセージに「サーバーテキストからの無効な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

関連する問題