Hehehehe ini  ternyata kasusnya adalah salah cara make SFSB :).

Ini pasti niruin sample dari SLSB, atau bisa jadi ini dapet contoh
Sample yg ngawur kekekekekekeke.

Kalau kita taruh SFSB kedalam attribute Controller, kita harus tahu
lifecycle dari controller tersebut. Kalau kontroller tersebut di
instantiate setiap new request berarti ya kaga ada gunanya make SFSB
hehehehehehhe, sami mawon sama SLSB. Kalau controller kita berupa
servlet, berarti SFSB bakalan dipake berulang2 kali setiap ada
request.

Nah cara penggunaan SFSB yg tepat bisa dengan 2 alternatif :

1. Kamu menghandle sendiri Proses penyimpanan SFSB reference object
kedalam HttpSession, dan meremove setelah selesai.
2. Alternatifnya, kamu menggunakan Controller yg memiliki Scope
Conversation,  seperti kebanyakan framework jaman sekarang.

Nah kalau kamu menggunakan framework yg memiliki conversation scope,
artinya, instance dari controller kamu itu secara otomatis, di
initiate pada saat conversation begin, dan berakhir saat conversation
end. Dan artinya, satu conversation controller dimiliki oleh satu
user. Sehingga kamu bisa inject SFSB @EJB didalam attribute controller
kamu. Contoh framework yg support Conversation misalnya Spring, Seam,
Google Guice.

Tapi kalau kamu menggunakan controller yg  Application Scope,
contohnya Servlet. Servlet di instantiate oleh container, dan
digunakan berkali2 setiap ada request dari user yg beda. Nah kalau
kamu pakai Servlet, kamu tidak boleh meng-inject SFSB kedalam
attribute servlet. Sebab ini sama juga artinya men-sharing SFSB itu ke
setiap request untuk semua user.

Sama halnya juga dengan controller yg Request Scope. Ini contohnya
seperti WebWork, instance dari controller nya diinstantiate setiap ada
request. Nah kamu juga tidak boleh menempatkan SFSB kedalam attribute
controller ini. Sebab setiap request berarti kamu harus me lookup SFSB
lagi.

Nah, untuk Application Scope dan Request Scope controller, cara
menggunakan SFSBnya adalah dengan melookup SFSB dari jndi didalam
method, kemudian disimpan kedalam HttpSession.

:) Cheers !

Kirim email ke