java - 为什么 EJB 需要实现可序列化接口(interface)?

标签 java jakarta-ee serialization ejb

为什么 EJB 类需要可序列化? 我听说这与 RMI 在幕后使用有关。我知道 RMI(远程方法调用)是如何工作的,在服务器端注册了一个远程对象,只有远程对象的 stub 被发送到客户端,不是整个对象。

因此在 RMI 应用程序中,远程对象的方法需要采用可序列化的参数和返回值,因为它们是通过网络发送的,而不是远程对象本身。

最佳答案

实现 javax.ejb.EntityBean 的旧 J2EE 风格 EJBS 的原因, javax.ejb.SessionBeanjavax.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/

相关文章:

java - 关于标准 JOptionPane 上的取消按钮的问题

java - 创建 Eclipse 项目预设

java - Java EE 中的文件夹访问

jakarta-ee - 挂起的事务是否超时?

C# WebAPI 2反序列化产生空值但没有异常

Windows 关机时 Java 退出

java - 从需要 Java 1.8 的 jar 创建 bundle 应用程序

Java EE 6 - SEAM + EJB 集成/3 层架构

java - 序列化对象时是否需要处置它?

c++ - 我如何最好地阅读 boost 序列化文件?