2011-05-15 22 views
7

Uygulama-Kapsamının birden çok kullanıcı üzerinde devam ettiğini biliyorum, bu nedenle tüm ApplicationScoped ManagedBeans öğelerinin iş parçacığı için güvenli olduğundan emin olmamız gerektiği açık.JSF'de neden SessionScoped ManagedBean iş parçacığı güvenli hale getirmeliyiz?

Ayrıca biz RequestScoped ManagedBean için iplik güvenliği hakkında bakım gerekmez anlıyoruz. Bunun nedeni, yalnızca bir HTTP isteği için geçerlidir ve başvuruda bulunulan her istek için yeni örneklenir.

Ama biz SessionScoped ManangedBean için iplik güvenliği hakkında endişe neden oldukça emin değilim. Birden çok istekte devam etmesine rağmen, her bir kullanıcı kendi örneğini alır, değil mi?

Niye SessionScoped ManagedBeand durumunda iplik güvenliğinden endişe gerekiyor ve bu çok ViewScoped ManagedBean uygulanır? ViewScope, aynı görünüm için 2 ardışık istekte devam ediyor, değil mi?

Zaten belli bir kapsamda verilerin threadsafety dert varsa

cevap

8

, daha sonra veri büyük olasılıkla daha dar kapsamda aittir (yani üst düzey tasarımında bir kusur yoktur). Eğer veriler doğru kapsam içine konulduysa, o zaman iş parçacığı hakkında endişelenmene gerek yok. Fasonlarınızın, getters numaralı telefondan hiçbir iş mantığı oluşturmadıkları şekilde tasarlandığını farz ediyorum.

gibi herkes için aynıdır açılır listeler gibi uygulama geniş veri/sabitler uygulama kapsamı kullanın. Oturum açmış kullanıcı ve kullanıcı tercihleri ​​(dil, vb.) Gibi müşteriye özel veriler için oturum kapsamını kullanın. Zengin ajax etkin dinamik görünümler için görünüm kapsamını kullanın (ajaxbased validation, rendering, vb.). Basit ve ajax olmayan formlar/sunumlar için istek kapsamını kullanın.

+0

Ben Oracle'ın JavaEE6 öğretici okuma ve orada ApplicationScoped kullanarak ve SessionScoped fasulye yönetilen zaman, önlemler parçacığı güvenliği için alınması gereken ve ne anlamda merak söylüyor oldu? Ama şimdi açık. Güzel bir açıklama. Teşekkür ederim. –