SORU
3 Aralık 2010, Cuma


Destek fasulye (@ManagedBean) veya CDI Fasulye (@Adlı)?

Sadece Core JavaServer Faces, 3rd Ed. ile okumaya başladım ve bu (vurgu benim) derler

İki ayrı mekanizma, CDI fasulye olduğunu tarihsel bir rastlantı değildir ve AKSARAY fasulye, AKSARAY sayfalarında kullanılan fasulye için başardı.Öneririz CDI fasulye kullanınuygulamanız düz bir sunucu uygulaması üzerinde çalışmak gerekir sürece Tomcat gibi bir koşucu.

Neden? Vermeyinherhangi birgerekçe. Prototip bir uygulama gerçekten bu ile herhangi bir sorun fark etmedim 3, ve Önemli olan üzerinde çalışan tüm fasulye @ManagedBean kullanıyorum. Özellikle @Named, @ManagedBean geçiş sorun değil ama öğrenmek istiyorumneden rahatsız gerekir.

CEVAP
3 Aralık 2010, Cuma


Temel fark, başka bir yönetilen fasulye AKSARAY, @ManagedBean AKSARAY çerçeve tarafından yönetilen ve @ManagedProperty ile sadece kullanılabilir. @Named yönetilen uygulama sunucusu (kap) CDI çerçeve ve üzerinden @Inject mevcut herhangi bir konteyner yönetilen obje gibi @WebListener, @WebFilter, @WebServlet, @Path, @Stateless, vb ve hatta bir OLUMSUZLUK @ManagedBean. , @ManagedProperty geliyor öbür taraftandeğil@Named veya başka bir konteyner yönetilen bir obje içinde çalışır. Gerçekten @ManagedBean sadece içinde çalışır.

Başka bir fark CDI aslında vekiller her istek/konu için ayrı ayrı hedef kapsamında geçerli örnek (EJBs enjekte edilmiş gibi) temsilciliği enjekte ediyor. Bu mekanizma, AKSARAY ile mümkün değil, daha geniş bir kapsamı, bir fasulye daha dar bir kapsam @ManagedProperty fasulye enjekte sağlar. AKSARAY "" fiziksel örneği burada doğrudan bir pasör çağırma (bir pasör olması gereken, tam olarak da bu . tarafından enjekte ^strong>değil@Inject) gerekli.

Doğrudan değil dezavantaj &a-iken; diğer yol-vardır; @ManagedBean kapsamında sadece sınırlıdır. Eğer "@Inject için de sadece yönetilen fasulye @ManagedBean sen de kalabilir." çok fazla ifşa etmek istemezsin ama başka bir bakış açısıyla, protected karşı public gibi. Ama o sayılmaz.

En azından, AKSARAY 2.0/2.1, AKSARAY destek CDI tarafından fasulye @ViewScoped CDI eşdeğeri yok yani yönetmenin büyük dezavantajı. @ConversationScoped yakın geliyor, ama yine de el ile başlatma ve durdurma gerektirir ve* *25 çirkin bir istek sonucu URL parametresi ekler. MyFaces CODİ daha kolay hale getiriyor tarafından tamamen şeffaf köprüleme AKSARAY javax.faces.bean.ViewScoped CDI böylece yap @Named @ViewScoped ancak bu ekler çirkin windowId istek parametre için sonuç URL, ayrıca düz vanilya sayfa sayfa gezinti. OmniFaces keyfi bir istek parametresi için gerçekten bean görünüm durumu AKSARAY için kapsam bağlayan 42* *gerçek bir CDI ile yerine tüm bu sorunları çözer.

AKSARAY 2.2 3 yıl bu soru/cevap sonra yayınlanmış () javax.faces.view.ViewScoped lezzet kutusu tam CDI @ViewScoped uyumlu yeni bir açıklama sunuyor. AKSARAY 2.2 bile @ManagedBean emsali olmayan CDI-sadece @FlowScoped ile, bu vesile CDI karşı OLUMSUZLUK kullanıcılar iterek gelir. Beklenti @ManagedBean ve arkadaşlarının başına Java EE 8 olarak onaylanmaz. Eğer şu anda hala @ManagedBean kullanıyorsanız şiddetle CDI gelecekteki yükseltme yolları için hazırlanmış olacak geçmek için tavsiye var bu yüzden. CDI Java EE Web Profili uyumlu konteynerler, WildFly, TomEE ve Önemli gibi kolayca kullanılabilir. Tomcat için, tam olarak zaten OLUMSUZLUK için yaptığı gibi, ayrı olarak yüklemelisiniz. Ayrıca How to install CDI in Tomcat? bkz

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Howcast

    Howcast

    4 EKİM 2007
  • Alexey - servant of Christ

    Alexey - ser

    15 EYLÜL 2007
  • Manuel Vizcaino

    Manuel Vizca

    27 Mayıs 2008