EJB之Local与Remote

EJB接口之Local与Remote

发布EJB时,可以选择每个接口的访问方式:本地访问或远程访问。顾名思义,本地访问就是指调用者在与EJB同一台机器(JVM)中访问EJB,否则就是远程访问了。在一个EJB中,Remote与Local能够同时使用,但是需要配置各自的value属性,且一个接口只能用一种注解标注

Local 接口


  • 注解为”@Local”的接口称为本地接口(或者@Local和@Remote都不存在时,默认为Local接口)。
  • 由于在同一个JVM中运行,调用者调用EJB时,直接查找地址访问EJB,快速。
  • 访问的是服务端的EJB本身。
  • 若需要传入对象做参数,对象可以不用实现序列化接口。
  • 常用于同一个EJB中 Session Bean 和 Entity Bean 之间的相互调用

Remote 接口


  • 注解为”@Remote”的接口称为本地接口
  • 以RMI(Remote Method Invocation 远程方法调用)的方式实现调用,参考链接
  • 访问的是EJB的拷贝。
  • 若需要传入对象做参数,对象必须实现序列化接口。
  • 常用于 servlet/jsp 或 Java 应用客户端的调用。

使用总结

  1. 如果你的 EJB 客户与 EJB 处于同一个JVM环境中时,你可以只生成 local 类型接口(包括EJBHome 与EJBObject),如果你需要在与EJB容器不同的JVM环境中调用你的EJB的话,你必须生成Remote类型的接口(包括EJBHome 与 EJBObject);
  2. 在一般情况下建议两种类型的接口都生成。尤其是Session Bean,Entity Bean,可以只生成local类型的接口,如果想远程调用你的Entity Bean一般用Session Bean做代理
  3. 如果你不是远程调用EJB的话,使用EJB时建议调用local接口,这样效率高,因为远程调用就意味着建立网络连接,效率必然不如local调用。

generated by haroopad

原文地址:https://www.cnblogs.com/wcb-xtu/p/5373835.html