2009-11-06 44 views
12

我正在學習EJB3,我只是很好奇,何時使用SFSB很方便?當SFSB真的很容易解決一些複雜的問題時,我找不到任何好的例子。爲什麼使用有狀態會話bean?

其實我看到SLSB可以用作網絡服務,這很方便。但我不知道何時使用SFSB。我只看到它的問題,因爲我們應該瞭解它,我們應該編寫由少於完全的註釋組成的代碼,我們應該使用惱人的查找...並且我們沒有得到任何好的回報。

例如,我們不能使用SLSB中的SFSB,因爲有狀態的對象只能從有狀態的上下文中使用。我們不能在servlet中使用DI,而應該使用JNDI查找手動創建SFSB實例,然後將其放入HttpSession對象中。它不能成爲網絡服務。

我在SFSB中看到的唯一好處是交易管理。但我認爲當我們真的需要一個交易並且我們不需要數據庫的情況很少見。當我們將數據存儲在XML文件中並使用SFSB中的事務管理來管理非關係數據庫時,我可以想象它會非常有用。

我幾乎可以肯定,我完全錯了,所以給我一些非常好的SFSB使用示例。

+0

收益或利益? – 2009-11-06 10:45:11

+0

真的嗎? ) – Roman 2009-11-06 10:58:27

回答

8

我正在學習ejb3,我只是很好奇使用SFSB嗎?當SFSB真的很容易解決一些複雜的問題時,我找不到任何好的例子。

你的意思就像是購物車?這是我能想到的明顯答案。

其實我看到SLSB可以作爲Web的服務,這是方便。

您可以將EJB視爲部署分佈式服務的一種方式,但要小心。術語「Web服務」使得大多數人想到「基於SOAP協議的Web服務使用HTTP協議」,這不是你在SFSB中所擁有的。

但我不知道何時使用SFSB。我只看到它的問題,因爲我們應該學習一些東西,我們應該編寫由少於完全的註釋組成的代碼,我們應該使用煩人的查找。而且我們沒有得到任何好的回報。

這一段很混亂,但我認爲你說你不太喜歡EJB。

例如,我們不能從SLSB使用SFSB,因爲狀態的對象只能從有狀態的上下文中使用。

對,它們是互補的。您使用SFSB來處理需要等待的用例,即在兩次調用之間維護狀態。

我們不能在Servlet中使用DI,而不是它,我們應該使用查找手動創建SFSB實例,然後把它放到HttpSession對象。它不能成爲網絡服務。

servlets從哪裏來的?

我在SFSB看到的唯一利潤是交易管理。但我認爲當我們真的需要一個交易並且我們不需要數據庫的情況很少見。當我們將數據存儲在xml文件中並使用SFSB中的事務管理來模擬非關係數據庫時,我可以假設它非常有用。

我覺得你完全脫離了這裏。會話bean是那些瞭解工作單元和管理交易的人。當用例完成時,他們可能不得不使用實體bean來堅持某些狀態,所以事務並不像你想象的那樣不常見。

我幾乎可以肯定,我是完全錯誤的,所以給我SFSB使用的一些真的很好的例子。

你的期望是什麼?有人會發布工作SFSB?我不打算這麼做,主要是因爲我不是一個大的EJB粉絲。 (我盡你所能指望的一切,以及更多與春天。)

但請放心,SFSB有時是有用的。購物車就是一個明顯的例子。您需要一個地方來維護購物車中的物品,直到客戶決定購買。 SFSB是實現這一目標的一種方式。

0

在有狀態和無狀態架構之間進行選擇只是一個設計問題。

大多數時候無狀態設計是首選,因爲它更容易。

雖然簡單,一開始明白,建立無狀態的應用導致了一系列的問題(大量的無狀態的Web服務,春季單,等...),使得應用從長遠來看難以管理。

我更喜歡在可能的情況下設計有狀態的應用程序。

有狀態會話bean是一種方法。 另一個是spring原型或web作用域bean。

也檢查jboss縫框架。

+0

無狀態設計是首選,因爲它更容易。這種說法是錯誤的。這一決定是根據要求制定的,兩者在業務方面都有巨大的變化。 – Tony 2015-09-23 16:23:56