我是Java EE的新手,对EJB感到困惑。
据我了解,@ remote EJB使用RMI和JNDI进行通信。
在EJB3.0 Bean需要通过EJBHome接口实现远程接口之前-这样,我便知道如何使用RMI。
但是现在我只需要添加@remote批注,即可将其替换为ejb-jar.xml中的属性。

因此,问题是:如何在没有Seri​​alizible接口的情况下使用JNDI和在没有Remoteinterface的情况下使用RMI?

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

最佳答案

EJB3仍然在下面使用RMI,只是应用程序容器将负责为您自动生成和使用RMI存根和远程接口,并将它们映射到EJB3类。
在某些情况下,仍然需要使用Serializible。参见this



  集群会话Bean(SLSB和SFSB)
  
  首先,集群EJB3
  SLSB或SFSB不需要实现Serializable。实际上,
  建议他们不要。如果是集群式SLSB,则没有状态
  复制发生,因此它们的实例变量甚至不需要
  可序列化。但是,对于集群式SFSB,相同的序列化
  用于SFSB钝化的规则适用于SFSB状态复制。在
  换句话说,所有非瞬时实例变量
  对bean,会话上下文或用户事务的引用必须是
  可序列化的,或在复制时为null。有关更多信息
  SFSB钝化(以及扩展复制,因为两者
  如果需要序列化SFSB bean上下文),请检查
  EJB3核心规范的4.2.1节。
  
  集群实体Bean
  
  这些仅在以下情况下需要标记为可序列化
  集群实体实例将按值作为分离的值传递
  对象(例如,通过远程接口)。否则就没有必要了
  将其标记为可序列化。

09-25 21:04