EJB接口之Local与Remote
发布EJB时,能够选择每一个接口的访问方式:本地访问或远程访问。顾名思义,本地访问就是指调用者在与EJB同一台机器(JVM)中访问EJB,不然就是远程访问了。在一个EJB中,Remote与Local可以同时使用,可是须要配置各自的value属性,且一个接口只能用一种注解标注php
Local 接口
- 注解为”@Local”的接口称为本地接口(或者@Local和@Remote都不存在时,默认为Local接口)。
- 因为在同一个JVM中运行,调用者调用EJB时,直接查找地址访问EJB,快速。
- 访问的是服务端的EJB自己。
- 若须要传入对象作参数,对象能够不用实现序列化接口。
- 经常使用于同一个EJB中 Session Bean 和 Entity Bean 之间的相互调用
Remote 接口
- 注解为”@Remote”的接口称为本地接口
- 以RMI(Remote Method Invocation 远程方法调用)的方式实现调用,参考连接
- 访问的是EJB的拷贝。
- 若须要传入对象作参数,对象必须实现序列化接口。
- 经常使用于 servlet/jsp 或 Java 应用客户端的调用。
使用总结
- 若是你的 EJB 客户与 EJB 处于同一个JVM环境中时,你能够只生成 local 类型接口(包括EJBHome 与EJBObject),若是你须要在与EJB容器不一样的JVM环境中调用你的EJB的话,你必须生成Remote类型的接口(包括EJBHome 与 EJBObject);
- 在通常状况下建议两种类型的接口都生成。尤为是Session Bean,Entity Bean,能够只生成local类型的接口,若是想远程调用你的Entity Bean通常用Session Bean作代理
- 若是你不是远程调用EJB的话,使用EJB时建议调用local接口,这样效率高,由于远程调用就意味着创建网络链接,效率必然不如local调用。
generated by haroopadcss