[EJB Note] Stateless vs. Stateful – Part 1

หลังจากไปพยายามค้นคว้่าหาคำตอบ จากหลายๆเวบที่น่าเชื่อถือว่าการทำงานของ stateless และ stateful ซึ่งเป็น session beans บน EJBs นั้นมันต่างกันยังไง ต้องใช้ในงานแบบไหน วันนี้ก็พบคำตอบที่คิดว่าเข้าใจได้ง่ายที่สุดแล้ว

Stateless Session Bean

stateless นั้น client-session bean จะเรียก instance ของ stateless object ตัวไหนก็ได้ อาจจะเป็นตัวเดิม, ตัวที่สร้างขึ้นมาใหม่, หรือตัวอื่นๆ ที่มีอยู่ในขณะนั้น (make a call on a difference instance of the same object)  เราไปดูตามรูปเลยดีกว่า

รูปด้านบนนี้มี Caller แค่ตัวเดียวโดยจะ request ไปยัง instance ของ stateless session bean ทั้งหมด 3 ครั้ง โดยเราจะสังเกตได้ว่าบน container น้นจะมี instance ของ stateless session bean อยู่ทั้งหมด 3 ตัว และให้สังเกตุว่าในแต่ละการ invoke นั้นจะ invoke ไปยัง instance ไหนก็ได้ โดยอาจจะเรียกไปยัง A , B หรือ C ก็ได้

เพื่อให้เห็นภาพชัดเจนขึ้นเมื่อมี Caller เพิ่มขึ้นมาเป็น 3 สังเกตว่าขึ้นขั้นตอนการ invoke นั้นจะเรียกไปได้ทุก instance ที่มีอยู่ในขณะนั้นเลย ถ้า caller 1 เรียก step 1 ไปยัง instance  B เมื่อถึงเวลา เรียก step ที่ 2 อาจจะเรียกไปยังที่ instance A หรือ C แทนก็ได้ (multiple callers may access any instance of a stateless object and have their call satisfied)

การที่ client – session bean ทำการ called แล้ว เราจะรู้ได้ไงว่า container จะเอา instance ตัวไหนมา serve ให้ ถ้าเป็น stateless session beans นั้น เราไม่สามารถบอกได้ครับเพราะตัว container นั้นจะจัดการให้เอง

Tags : ,

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

  1. มันก็ถูกนะ แต่มันเหมือนที่พูดมาแต่แรกเป็น subset อ่ะ สุดท้ายคีย์เวิร์ดจะอยู่ล่างสุดคือ

    [[
    การที่ client – session bean ทำการ called แล้ว เราจะรู้ได้ไงว่า container จะเอา instance ตัวไหนมา serve ให้ ถ้าเป็น stateless session beans นั้น เราไม่สามารถบอกได้ครับเพราะตัว container นั้นจะจัดการให้เอง
    ]]

    container จะเป็นคนเลือกให้ caller ไม่ต้องรู้ ในทางทฤษฏีอาจจะใช้ instance A มา serve เสมอๆก็ได้อีกเหมือนกัน ^ ^

Leave a Reply

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