[EJB Note] Stateless vs. Stateful – Part 2

Stateful Session Bean

สิ่งที่ต่างกันมากก็คือทางด้านของ stateful session bean นั้นแต่ละ instance ของตัวมันจะใช้กับ client-bean session เพียงตัวเดียวจนกว่ามันจะทำงานจบ state ของตัวมันซึ่งเราจะเรียก state นี้ว่า “conversational state”  (the instance variables represent the state of a unique client-bean session.)  ยกตัวอย่างให้เห็นภาพกันง่ายๆก็คือ shopping cart ครับ เรามี shopping cart object ซึ่งเป็น instance ของ stateful session bean ในแต่ละ instance นั้นจะทำงานร่วมกับลูกค้าเพียงคนเดยีวเท่านั้น ดังนั้นถ้ามีลูกค้าใช้งานระบบอยู่ 1,000 คน ก็จะมี stateful session bean instance อยู่ 1,000  instance เช่นกัน ถ้า Caller 1 เรียกใช้งาน instance A ไปแล้ว ทุกๆ state ของการทำงาน ก็จะต้องใช้ instance A เพียงอย่างเดียวจนจบ state

จากรูปจะเห็นได้ว่าทุกๆ Step นั้น Caller จะ Calls ไปยัง instance ตัวเดิมอยู่เสมอๆ ต่อไปเรามาดูในกรณีที่มี Callers มากกว่า 1 กันครับ

สังเกตว่า Caller 1 เรียกไปยัง instance “Neo the One” ในขณะที่ Caller 2 และ 3 ก็เรียกไปยัง instance “Neo the One” เช่นเดียวกัน แต่จะโดน block เอาไว้ทั้งหมด เนื่องจาก Caller 1 และ  instance “Neo the One” นั้นยังอยู่ใน state ที่เรียกว่า “conversational state” นั่นเอง ทาง container จะทำการ new instance มาให้ Caller 2 และ Caller 3 ใช้แทน

Tags : ,

0 thoughts on “[EJB Note] Stateless vs. Stateful – Part 2”

Leave a Reply

Your email address will not be published. Required fields are marked *