2015-09-25 26 views
6

Birkaç büyük dosya yüklendiğinde oturum zaman aşımı olabilir mi? Bir 5 GByte büyük dosya yüklediğimi ve kısa bir oturum zaman aşımı ayarlandığını düşünün. Dosya akışı sırasında oturum zaman aşımı olabilir mi?Primefaces dosyasıYükleme ve oturum zamanlaması

cevap

8

Evet, yapabilir. servlet specification, etkin bir istek sırasında bir oturumun imha edilebileceğini hiçbir şekilde yasaklamaz. Böylesi bir yükleme fasulyeye ulaştığında, ViewExpiredException riskini alırsınız. Bu sorun olacaksa

, birkaç seçeneğiniz var:

  1. yükleme formu uyumsuz canlı oturumu tutmak için aralıklarla sunucuya anket yapalım. EL'de mevcut zaman aşımını saniye cinsinden elde etmek için #{session.maxInactiveInterval} kullanabilirsiniz.
    <p:fileUpload ... /> 
    <p:poll interval="#{session.maxInactiveInterval - 10}" async="true" /> 
    

    10 saniye fark

    sadece sayfanın kendisi de tüm HTML yüklenmesi biraz zaman alabilir ve anket başlatmak için çünkü çok geç birkaç saniye ulaşmasını önlemektir. Gerekirse, yüklemeyi başlatmak için anketi şartlı olarak başlat/aç.
  2. yüklemenin "onstart" olayı belli bir sınıra kadar bu süreyi (saat?) Artırmak ve yüklemenin "onComplete" etkinliği geri koyun yapsın.

    <p:fileUpload ... onstart="increaseTimeout()" oncomplete="resetTimeout()" /> 
    <p:remoteCommand name="increaseTimeout" listener="#{bean.increaseTimeout}" /> 
    <p:remoteCommand name="resetTimeout" listener="#{bean.resetTimeout}" /> 
    

    Fasulye kullanımda ExternalContext#setSessionMaxInactiveInterval() saniye cinsinden istenen oturum zaman aşımı ayarlamak için olabilir.


  3. bir stateless MTU formu kullanın. HTTP oturumunun nasıl davrandığına bakılmaksızın görünüm asla sona ermez.

    <f:view transient="true"> 
        ... 
    </f:view> 
    

    Not: Herhangi bir görünüm isteği kapsamlı olanlar gibi davranacaktır böyle bir görünüme bağlı fasulye kapsamlı. Karışıklığı önlemek için gerekirse ek açıklamaları değiştirin.

+0

Çok teşekkürler. 2. seçeneği kullanacağım çünkü yükleme bittiğinde durumumda 'p: fileUpload' görünmeyecek. Kapalı olacak ve javascript çağrısı ile yükleme başlatılır. – opfau

+0

Rica ederim. Vatansız JSF formunun belirtilmesi için – BalusC

+1

+1! : Şimdiye kadar bunu bilmiyordum. hangi jsf sürümünde mevcut olacak? – Fritz