Bedanya, kalo pake SFSB, state bisa diakses langsung dari komponen EJB manapun.
kalo state disimpan di HttpSession, state mesti dikirimkan berulang
kali ke EJB instance
mana saja yg membutuhkannya, sesering pemanggilan ke EJB instance yg dilakukan.
kalo dipandang dari sisi client, benefit penggunaan SFSB atau
HttpSession tidak begitu
kelihatan perbedaannya. Tetapi SFSB sendiri akan kelihatan benefitnya jika
diperlukan oleh komponen EJB yang lain jika mau menyimpan state2
tertentu yg diperlukan.
Adakalanya state ini tidak seharusnya disimpan di database, walaupun sebenarnya
bisa aja kita bilang, statenya bisa disimpan di database saja.
Selama, webapp dan EJB deployment dilakukan di satu server yg sama,
maka penggunaan
HttpSession atau EJB SFSB tidak begitu kelihatan bedanya. Akan benar2
terasa, jika ternyata
deployment webapp dan EJB komponen dilakukan di beberapa server yg
terpisah (distributed).
Sehingga tidak bisa dihindari jika diperlukan bagi EJB untuk menyimpan
state2 tertentu
yg diperlukan, maka harus disediakan EJB khusus untuk itu, tidak lain
tidak bukan salah satunya
adalah dengan SFSB. kalo udah bener2 distributed seperti ini, akan ada
overhead di sisi network
traffic kalo masih dipaksakan state disimpan di HttpSession jika
ternyata state2 tertentu
diperlukan antar EJB instance saja.
Singkat kata, mau pake HttpSession atau SFSB, tergantung kebutuhan.
Kadangkala kalo pake single deployment satu paket web + ejb dalam satu
server yg non distributed
penggunaan SFSB keliatan overkill. silahkan saja kalo mo pake HttpSession
mungkin untuk kasus Endy ternyata lebih cocok pake HttpSession.
Dan karena keseringan kita develop aplikasi adalah web based dan gak
selalu bener2 enterprise-grade
jadinya fitur2 enterprise yg rada-rada high-end sering dihujat habis2an
sesekali lirik ke enterprise level development yg beneran. kalo emang
gak butuh, gak ngelirik
juga gak papa.


2009/5/10 Achmad Arif Rachim <a...@rach.im>:
>
>
>> Uummm.. kalo gini ujung2nya sama kayak yang di bilang Pak Endy dong..
>> Ujung2nya pake HttpSession juga.. Jadi "kegunaan" dari SFSB sendiri jadi
>> hampir ga ada??? Ujung2nya memanage dan memantain Http Session juga...
>
> Menggunakan HttpSession untuk webapp agar reference object terhadap
> SFSB tidak hilang. Balik ke cerita awal, penggunaan SFSB, IMO lebih
> efisien ketimbang menggunakan VO yg di simpan di HttpSession. (Kasus
> session replication).
>
> Kalau objective kamu hanya menyimpan state, ya ga perlu SFSB. Tapi
> kalau sudah mempertimbangkan faktor2 seperti penggunaan JPA juga
> Transaction, nah SFSB comes in handy.
>
>>
>>> 2. Alternatifnya, kamu menggunakan Controller yg memiliki Scope
>>> Conversation, seperti kebanyakan framework jaman sekarang.
>>
>> Kalo ini mah ya sudah jelas..
>>
>> Berarti kalo gitu, design awal (Java EE 1.2, 1.3) Stateful Session Bean
>> itu
>> dibuat dan diciptakan bukan untuk dipake sebagai native web app component
>> ya? Tapi untuk desktop app?
>
> Engga juga, SFSB kan awalnya diciptakan agar kita bisa menempatkan
> business logic terpisah dari clientnya. Client disini bisa webtier,
> atau desktop application. Kalau kamu inget J2EE core pattern jaman
> dulu, ada istilah SessionFacade.
>
> Stateful Session Facade Strategy
> A business process that needs multiple method calls to complete the
> service is a conversational business process. The conversational state
> must be saved between each client method invocation. In this scenario,
> a stateful session bean may be a more suitable approach for
> implementing the Session Facade.
>
> Nah kata kuncinya ada disini "A business process that needs multiple
> method calls to complete the service is a conversational business
> process." Jadi kalau kamu butuh aplikasi seperti wizard page,
> penggunaan SFSB sangat bermanfaat.
> 



-- 
syaiful.mukhlis
gtalk:syaiful.mukh...@gmail.com

Kirim email ke