簡體   English   中英

為什么有狀態的bean無法公開為Web服務?

[英]Why can't stateful beans be exposed as webservices?

我一直在閱讀有關有狀態和無狀態會話Bean的信息,並遇到一句話:

有狀態會話Bean不能作為Web服務公開

誰能詳細說明為什么?

這是因為通常不需要跨Web服務客戶端調用維護狀態。 而且,基於SOAP的Web服務本質上本質上是無狀態的。 如果您需要在Web服務調用之間維護狀態,則可以使用無狀態Bean來保持狀態(盡管這會降低應用程序性能)

位於EJB容器中的每個有狀態bean實例都有一個唯一的對象標識。

來自規范:3.4.7.1有狀態會話Bean

有狀態會話對象具有唯一的標識,該標識在創建對象時由容器分配。

為了使用有狀態bean,客戶機代碼需要從EJB容器獲取有狀態引用。 該參考必須用於提出以后的每個請求。 由於引用對象知道與有狀態Bean關聯的身份,因此可以確保為同一實例Bean解析所有參與“對話”的請求。 這意味着客戶在實現有狀態行為方面起着重要作用。

SOAP協議沒有提供一種允許在Web服務客戶端中存儲此身份的方法,因此,如果客戶端不知道哪個有狀態實例具有會話狀態,則每個請求將由不同的ejb處理(例如無狀態的情況下)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM