2011-12-21 14 views
6

Kafamı CDI ve EJB ve Entity Boundary Control (ECB) paterni etrafında tutmaya çalışıyorum. ECB modelini anlamam, Sınırın işlem sınırının başlangıcı ve bitişi olduğudur. Dahası, CDI bir EJB'nin yaptığı gibi işlem desteği sağlamamaktadır.EJB vs CDI ve "Varlık Sınırı Kontrolü" deseni

ECB desenini başarıyla uygulamak istiyorsam, aşağıdakiler doğrudur;

  1. I EJB (yani @stateless, @stateful, @singleton) ve CDI veya EJB ile kontrol tabakası ile sınır kısmı uygulayabilir.
  2. I CDI Sınır ve kontrol bölümünü uygulanması, ancak (http://smokeandice.blogspot.com/2009/12/cdi-and-declarative-transactions.html)
  3. Sınır benzer işlemi uygulamak için Sınırı CDI ile uygulayamıyorum ve sonra Kontrol katmanında EJB'leri kullanmaya başlayamıyorum.

Teşekkür

+1

Peki, o zaman soru nedir? –

+0

Sadece bahsettiğim 3 noktanın doğru olduğunu düşünerek kontrol etmek istiyorum? Ya da benim düşüncem yanlışsa. – vcetinick

cevap

12

Ben başarıyla yalnızca Kontrolörleri için Sınırları ve CDI EJB en kullanarak JavaEE 6 ECB deseni uygulamak. Benim mimarisinde Tipik yığın

  • Vatansız EJB
  • CDI Kontrolörü olarak @Dependent kapsamında iş mantığı için fasulye yönetilen
  • Boundary olarak REST hizmetini uygulamaya JAX-RS ek açıklamalarla açıklamalı
  • CDI yönetilen fasulye kullanır bir veritabanı ile
  • JPA varlık fasulye

etkileşim JPA EntityManager kullanmak Veri Erişim Nesneleri için @Dependent kapsamında Bounda oluşturan vatansız EJB en ry her zaman varsayılan olan @ TransactionAttribute (REQUIRED) ile açıklanır. Diğer işlem özelliklerini kullanmıyorum. Böyle yaparak, Sınır ile her etkileşimin tam olarak bir işlemde gerçekleşmesini sağlayabilirsiniz.

Sadece CDI tarafından yönetilen çekirdekler için Kapsam kapsamını kullanarak, her iş parçacığının kendi çekirdeklerine sahip olduğundan emin olabilirsiniz. Yani aynı zamanda CDI yönetilen bir fasülyeye erişmekten asla fazla bir iş parçacığına sahip değildiniz. Bunu yapmak, tipik eşzamanlılık sorunlarından sizi engeller.

Daha fazla ağırlığın bir arada kullanılması, Sınırlı ve hafif CDI tarafından yönetilen fasulye için havuzun EJB'lerini bir arada kullanmak, uygulamanın geri kalanı için çok iyi bir performans sergiliyor.

İlgili konular