שאלה ב 2 phase commit של weblogic

שאלה ב 2 phase commit של weblogic

יש לי stateless שמבצע 2 פעילויות מרכזיות עדכון של entity bean שליחת הודעה ב jms כשהוא מסיים ה-כ-ל, הוא מבצע commit אוטומטי (סיום של טרנזקציה) הבעיה היא שההודעה נשלחת מהר יותר מאשר הנתונים מופיעים ממש בדאטה בייס השאלות הם : האם יכול להיות ש commit שweblogic מבצע הוא לא ממש בדאטה בייס? ואם לא : האם יתכן הפרש זמן כל כך גדול? מה עושים?
 

zeevb

New member
יתכן ויש כאן שתי טרנזקציות נפרדות

כל הפעולות שאת מבצעת באותה מתודה ב-SLSB מתרחשות תחת אותה טרנזקציה ובסוף המתודה הטרזקציה נסגרת. במקרה שלך עדכון ה-EBs ושליחת ההודעה מתבצעות בתוך אותה טרנזקציה, אבל הקוד שמטפל בהודעה (לדוגמה MDB) עושה זאת בטרנזקציה אחרת - יתכן שההודעה מטופלת לפני שנגמרת המתודה ב-SLSB ואז לא רואים עדיין את העדכון ב-DB מחוץ לטרנזקציה. פתרון פשוט הוא לפרק את הפעולה או לבצע commit בקוד (במקרה כזה יש לשנות את ה-SLSB ל-Bean managed transaction). SLSB - Stateless Session Bean EB - Entity Beans MDB - Message Driven Bean
 
למעלה