Forum İçeriği > Persistence API's > Uzmanlık Sorusu
|
|
musutafu 21 ay önce
Aktivite Puanı: 4
sendMail bir thread çağırıyor olabilirmi
|
|
|
Serhat Meşe 21 ay önce
Aktivite Puanı: 62
Merhaba, sendMail bir thread cagirmiyor. Burdaki problem daha cok
entityManager.persist ile ilgili. em.persist objeyi veritabanina yazacak duruma
getiriyor ancak yazmiyor. Bu durumda kolonlarin uzunluklari ile ilgili
olusabilecek bir exceptioni o anda olusturamiyor. Dolayisiyla
entityManager.persist calisiyor arkasindan mail gonderiliyor ve yontem bittigi
zaman transaction bitiriliyor ve obje veritabanina yazilmaya calisiliyor. Tam
bu sırada exception aliniyor. Ama tabi ki işlem yapilmiş gibi mail atiliyor. Bu
durumun onune gecmek icin entityManager.persist satirindan sonra
entityManager.flush satirini ekledim. Boylece persist yontemini cagirdiktan
sonra objeyi veritabanina yazmaya zorluyorum. Veritabanina yazamadigi icin
exception firlatiyor ve dolayisiyla mail de gonderilmemis oluyor. Yeni kod
asagidaki gibi oldu. @Stateless public class DenemeBean implements
DenemeLocal { @PersistenceContext private EntityManager entityManager; public
void addEntity(Entity a){ try{ entityManager.persist(a);
entityManager.flush(); sendMail(); }catch(Exception e){
e.printStackTrace(); } } } iyi calismalar...
|
|
|
Gökalp Gürbüzer 20 ay önce
Aktivite Puanı: 64
sorununuzu çözdüğünüze sevindim, yine de transaction denetimini dahil bütün
veritabanı işlemlerini DAL seviyesinde yapmanızı öneririm. Bean'lerin
bağımlılıklarını mümkün mertebe azaltarak farklı yerlerde de rahatlıkla
kullanılmasını sağlayabilirsiniz. |
Aktivite Puanı: 62
@Stateless public class DenemeBean implements DenemeLocal { @PersistenceContext private EntityManager entityManager; public void addEntity(Entity a){ try{ entityManager.persist(a); sendMail(); }catch(Exception e){ e.printStackTrace(); } } }