为什么 EJB 类需要可序列化? 我听说这与 RMI 在幕后使用有关。我知道 RMI(远程方法调用)是如何工作的,在服务器端注册了一个远程对象,只有远程对象的 stub 被发送到客户端,不是整个对象。
因此在 RMI 应用程序中,远程对象的方法需要采用可序列化的参数和返回值,因为它们是通过网络发送的,而不是远程对象本身。
最佳答案
实现 javax.ejb.EntityBean 的旧 J2EE 风格 EJBS 的原因, javax.ejb.SessionBean和 javax.ejb.MessageDrivenBean应该是可序列化的是历史的。原文javax.ejb.EnterpriseBean这些扩展的接口(interface)恰好自身扩展 java.io.Serializable .在早期的 EJB 时代,人们认为这是促进在 JVM 之间移动 bean 所必需的。
EJB 2.0 规范发布时,EJB 实际实现 Serializable 的所有实际原因都消失了。
EJB 3 的引入消除了对任何这些接口(interface)(以及随后的 java.io.Serializable)的实现要求。
没有 EJB 规范,因为 EJB 2.0 指定 EJB 必须是可序列化的。由于接口(interface)继承,这只是隐式的。
隐式要求随 EJB 3.x 一起消失了。
关于java - 为什么 EJB 需要实现可序列化接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32485635/