簡體   English   中英

EJB3通信機制

[英]EJB3 communication mechanism

我是Java EE的新手,對EJB感到困惑。 據我所知,@remote EJB正在使用RMI和JNDI進行通信。 在EJB3.0 bean需要通過EJBHome接口實現Remote接口之前 - 這樣我理解了如何使用RMI。 但是現在我只需要放置@remote注釋,它可以被ejb-jar.xml中的屬性替換。

所以,問題是:如果沒有Seri​​alizible接口和沒有Remote接口的RMI,如何使用JNDI?

如果我的一些假設是錯誤的,請糾正我。

  1. EJB3仍在下面使用RMI,但應用程序容器將自動為您生成和使用RMI存根和遠程接口,並將它們映射到EJB3類。

  2. 在某些情況下,您仍然需要使用Serializible 看到這個

集群會話Bean(SLSB和SFSB)

首先,集群EJB3 SLSB或SFSB不需要實現Serializable。 事實上,建議他們不這樣做。 對於群集SLSB,不會發生狀態復制,因此它們的實例變量甚至不需要是Serializable。 但是,對於群集SFSB,用於SFSB鈍化的相同序列化規則適用於SFSB狀態復制。 換句話說,所有非bean,會話上下文或用戶事務引用的非瞬態實例變量都必須是可序列化的,或者在復制時為null。 有關SFSB鈍化的更多信息(以及擴展復制,因為在兩種情況下都需要序列化SFSB bean上下文),請查看EJB3核心規范的4.2.1節。

集群實體豆

如果要通過值將分簇實體實例作為分離對象(例如,通過遠程接口)傳遞,則僅需要將這些標記為Serializable。 否則,不需要將它們標記為Serializable。

EJB 使用 RMI,但它並不完全等於 RMI。 容器在運行時生成符合RMI規范的類和接口,並將它們隱藏起來。 這就是為什么在EJB項目中,遠程客戶端通常需要在其類路徑中包含一堆特定於容器的庫。 在這方面,EJB 2.0對於它使用RMI的事實更加透明,因此更復雜。

暫無
暫無

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

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