"jta-datasource" ve "resouce-local veri kaynağı" terimleri benim için biraz belirsiz.
Aslında, jta-datasource
ve non-jta-datasource
öğelerine başvurursunuz. Kısaca:
- sebat birimi işlem türü
jta-datasource
eleman bağlantıları elde etmek üzere kullanılacak olan JTA veri kaynağının Jndi adı bildirmek için kullanılır, JTA ise. Bu yaygın bir durumdur.
- Kalıcı birim işlem türü kaynak yerel ise,
non-jta-data-source
, JTA olmayan bir veri kaynağının JNDI adını bildirmek için kullanılmalıdır.
- aynı veritabanı bir JTA-veri kaynağı olarak ya da bir kaynak yerel veri kaynağı
Bu doğru şu şekilde ifade edilebilir. Ve sadece yukarıda bahsetmedim ama bazı sağlayıcılar, ve ve ve non-jta-datasource
bildirme izni vermeyi ve daha sonra JTA olmayan bağlantılar aracılığıyla (örneğin, devam eden bir JTA işlemi ile ilişkilendirilmeyecek) optimize edilmiş okumayı kullanmaya bile izin verirler. .
JTA-veri kaynağı olarak belirtilen Eğer
- , daha sonra fasulye/diğer sınıfları JTA kullanabilir. Bu nedenle, UserTransaction arayüzü. Birinci bölüm doğru
, son bölümü olarak değil. EJB 3.0 spec itibaren Konteyner Yönetilen İşlem çizilmesine Kullanılması bölüm 13.3.4 Kurumsal Fasulye:
kurumsal fasulyesi iş yöntemleri [...] elde etmeye veya javax.transaction.UserTransaction
arayüzü kullanmak yasaktır.
Ve bölüm 16.12 UserTransaction Arayüz: konteyner bu arayüzü kullanmak için izin verilmez kurumsal fasulye UserTransaction
arayüz kullanılabilir hale olmamalıdır
. Başka bir deyişle, UserTransaction
arabirimi, CMT kuruluş fasulyeleri için geçerli değildir. veri kaynağı
ifadeler yerel kaynak burada biraz kafa karıştırıcı olduğunu ise
Merhaba, Zaman ayırdığınız ve açıkladığınız için çok teşekkür ederim! Şimdi "kaynak yerel veri kaynağını" değil "kaynak yerel EntityManager" terimini kullandığımızı görüyorum. Evet "kaynak yerel veri kaynağı" dediğimde jta-veri kaynağı demek istemedim. Şu an anladığım kadarıyla: JTA/RESOURCE_LOCAL -> EntityManager'ın İşlem Türü. Temel işlemi kimin kontrol ettiğini belirler. JTA/EntityTransaction API'sı JTA EntityManger: Kapsayıcı bu EntityManager'ı yönetir. JTA işlemlerinde yer alır. Bir JTA işlemi, bir CMT veya BMT olabilir. Yönetilen sınıflarda kullanılabilir. – stratwine
Kaynak Yerel EntityManager: EnityManager, kapsayıcı tarafından yönetilmez. JTA olmayan işlemlerde içerir. EntityTransaction API'si kullanılır. POJOs BMT için kullanabilir miyim, UserTransaction hep JTA-veri kaynağı kullanır ve çok KMT nedeniyle Aynı şekilde olmayan bir JTA-veri kaynağı kullanamaz, konteyner sadece – stratwine
@stratwine bir JTA-veri kaynağı kullanabilirsiniz: Bir şey değil , yararlı bulduğunuz (ve anlayışınız doğru görünüyor). İfadeyle ilgili olarak, seçici olmayı istemedim, ancak spekülasyon çok hassas (ve ince) bir terminolojiyi tanımladığından, onu kullanarak iletişimi kolaylaştırır, bu yüzden bu konuda biraz ısrar ettim (ve okumayı tavsiye ederim) kısmen alıntı yaptığım bölümler). –