שאלה לגבי SERVLET בג'אווה האם אפשר שכל בקשה תחכה לסיומה של

gaglan

New member
שאלה לגבי SERVLET בג'אווה האם אפשר שכל בקשה תחכה לסיומה של

הבקשה הקודמת
אותו ה SERVLET מכניס נתונים לדטה בייס הוא מספיק מהיר אבל חשוב לי הסדר של מה שייכנס
תודה
 

Guy Yafe

New member
אי אפשר וזה לא אמור להיות ככה

בקשות HTTP מגיעות בצורה אסינכרונית לשרת, ואין דרך לדעת מי תגיע קודם ומי תגיע אחר כך (אם בכלל).
גם אם תעשה את מה שאתה רוצה באמצעות מנעולים או תורים, עדיין לא תוכל להיות בטוח בסדר ההכנסה:
בהחלט יכול להיות שמשתמש א' לחץ על העכבר לפני משתמש ב', ועדיין בקשה ב' תגיע לפני בקשה א'.
 

פרסאוס

New member
אפשר להכניס את הנתונים לתור

אבל היות ולא ציינת איך הסדר מתבצע, אי אפשר להגדיר מיון.
 

selalerer

New member
אולי התכוונת לבעיה של ביצוע מספר פעולות עבור בקשה אחת ביחד?

אם הבעיה היא סדר של מספר פעולות שקשורות לבקשה שבאמצע קורים דברים מבקשה אחרת אז אפשר להשתמש בטרנזאקציה - transaction.
&nbsp
transaction או מצליחה או נכשלת כולה ומתבצעת כאילו אף אחד אחר לא השתמש ב-DB מהזמן שהיא התחילה ועד שהסתיימה.
&nbsp
קח בחשבון שלפעמים (תלוי בסוג ה-transaction וסוג ה-DB) זה בדיוק כמו להשתמש במנעול שרק לקוח אחד יכול לבצע פעולות והשאר מחכים שיסתיים. אם זה כך אז זה יכול לגרום לבעיות ביצועים או ל-timeoutים לאלו שמחכים (כלומר לא יחכו אלא פשוט לא יצליחו לבצע את הפעולה).
 
למעלה