首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EJB3通信机制

EJB3通信机制
EN

Stack Overflow用户
提问于 2018-01-31 01:14:09
回答 2查看 243关注 0票数 1

我是Java的新手,对EJB感到困惑。据我所知,@remote EJB使用RMI和JNDI进行通信。在EJB3.0Bean需要通过EJBHome接口实现远程接口之前,我理解了RMI是如何使用的。但现在我只需要放置@remote注释,它可以由ejb-jar.xml中的属性替换。

因此,问题是:没有Serializible接口的JNDI和没有远程接口的RMI怎么可能使用JNDI?

如果我的一些假设是错误的,请纠正我。

EN

回答 2

Stack Overflow用户

发布于 2018-01-31 01:29:30

  1. EJB3仍然在底层使用RMI,只是应用程序容器会自动为您生成和使用RMI存根和远程接口,并将它们映射到您的EJB3类。
  2. 在某些情况下,您仍然需要使用Serializible。请参阅this

群集会话Bean (SLSB和SFSB)

首先,集群EJB3 SLSB或SFSB不需要实现Serializable。事实上,我们建议它们不要这样做。在集群SLSB的情况下,不会发生状态复制,所以它们的实例变量甚至不需要是可序列化的。但是,对于群集SFSB,用于SFSB钝化的相同序列化规则也适用于SFSB状态复制。换句话说,所有非引用bean、会话上下文或用户事务的非瞬态实例变量必须是可序列化的,或者在复制时为null。有关SFSB钝化(以及扩展复制,因为在这两种情况下都需要序列化SFSB bean上下文)的更多信息,请查看EJB3核心规范的4.2.1节。

群集实体Bean

只有当集群实体实例要通过值作为分离对象传递(例如,通过远程接口)时,才需要将这些实例标记为可序列化。否则,就没有必要将它们标记为可序列化的。

票数 2
EN

Stack Overflow用户

发布于 2018-01-31 01:31:24

EJB使用RMI,但它并不完全等同于RMI。容器在运行时生成符合RMI规范的类和接口,并对您隐藏它们。这就是为什么在EJB项目中,您的远程客户端通常需要在其类路径中包含一组特定于容器的库。在这一点上,EJB2.0对它在幕后使用RMI的事实更加透明,因此更加复杂。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48527013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档