2010-11-04 51 views
0

我已經構建了一個應用程序,該應用程序使用相同的RMI服務模擬多個客戶端。然後,每個客戶端都會同時調用該服務,並將數據上傳到服務器。我擔心的是,如果每次刪除調用都需要一段時間,遠程服務實現(jBoss 5 EJB)可以遠程處理這些調用,或者將它們串行化。作爲RMI服務公開的EJB的併發使用

如果是後者的話,那麼我不得不限制客戶端的數量,以防止減緩下來。

+0

因此,您問「Jboss是否優化了它的EJB的RMI生命週期處理?」我認爲這是JEE5而不是J2EE? – 2010-11-04 17:13:06

回答

1

RMI呼叫不sequentialized除非遠程方法實現執行某種同步。這適用於RMI/JRMP和RMI/IIOP。

1

你究竟是什麼意思?

你的意思是,有幾個客戶誰每個獲得遠程EJB bean,然後請他們收到的存根/代理的方法,或做大量的遠程客戶端共享同一個代理?

而且,我們在談論什麼樣的EJB豆?無狀態會話bean?

這些豆由服務器和用於每個進入的遠程方法調用到它們彙集,一個實例是從線程池分配給工作線程。所以是的,如果給定時間範圍內的請求數量大於可用bean實例和工作線程的數量,那麼這些剩餘請求將不得不等待,直到一個bean變爲可用。

這是一種自動流量調節機制因而。

+0

幾個客戶端使用正在從NamingContext查找的共享遠程代理。我擔心所有使用共享代理的客戶端之間的通信是否被序列化。所有遠程方法調用是使用一個套接字還是有一個套接字池? – 2010-11-04 17:58:27

+0

從bean的角度來看,它們確實是序列化的。 EJB規範明確指出,在任何給定的無狀態會話bean實例中,只有一個客戶端可以處於活動狀態。 – akira 2010-11-05 12:52:25

+0

p.s.請參閱以下文本: – akira 2010-11-05 12:52:50