`
lansezhixing123
  • 浏览: 5901 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

EJB中remote和local的区别

    博客分类:
  • EJB
阅读更多

local是本地接口,remote是远程接口。web层调用app层使用remote接口。session bean和entity bean之间调用使用的是local接口。不用说你也明白,remote接口对性能的影响很大。所以在程序设计的时候我们尽量用loacal接口,也就是facade模式。具体就是,web层调用app层的session bean,session bean在调用各个entity bean。就好比是打长途电话找5个人,你是准备给5个人分别通话(长途-remote)还是准备先和一人通话(长途-remote)然后在由这个人对另外4个(短途-local)分别通知?我想你会选择第二种情况(facade模式)。

local接口可以在与ejb同一个JVM环境中调用,但是不能对它进行远程调用,假设你的web容器与所需调用的ejb不在一台服务器上,或者不在同一个welogic server中时就不能调用local接口,在jndi查找的时候不能查找local home,而要查找remote home,也就是说需要实际进行RMI调用,而且必须提供Provider URL(例如t3://myserver:7001),而且他们返回给客户的对象也不一样,local home创建的是javax.ejb.EJBLocalObject类型,它没有继承Remote interface;而Remote home创建的是javax.ejb.EJBObject类型的,它扩展了Remote.实际上javax.ejb.EJBLocalObject型接口没有抛出RemoteException,因为对local类型接口的调用不是RMI,所以的对local接口的调用效率要高于对remote对象的调用,针对这点对EJB的设计提出以下建议:
1、如果你的ejb客户只可能存在于与ejb相同app server,或者说同一个JVM环境中时,你可以只生成local类型接口(包括EJBHome 与EJBObject),如果你需要在与EJB容器不同的JVM环境中调用你的EJB的话,你必须生成Remote类型的接口(包括EJBHome 与EJBObject);
2、在一般情况下建议两种类型的接口(包括EJBHome 与EJBObject)都生成,尤其是Session Bean,Entity Bean,可以只生成local类型的接口,如果想远程调用你的Entity Bean一般用Session Bean做代理。
3、如果你不是远程调用EJB的话,使用EJB时建议调用local接口,这样效率高,因为远程调用就意味着建立网络连接,效率必然不如local调用。
4、在jb7中设计EJB时,默认情况下只给你生成local类型接口,所以你需要在设计EJB时把interfaces设成:local/remote,这样的话你的EJB至少会有5个java文件

 

摘自:http://blog.163.com/space_wind/blog/static/1053809522010621105240441/

分享到:
评论

相关推荐

    Local和Remote方式访问EJB

    本主题将探讨“Local”和“Remote”两种方式访问EJB的知识点。 首先,我们要理解EJB的两种主要访问方式: 1. **Local访问**:这种方式适用于同一个应用内部的组件之间通信。Local接口不包含远程方法调用的开销,...

    Tomcat web工程 调用 JBOSS EJB local及remote源码

    Tomcat下web工程调用JBOSS部署的EJB项目 此源码包 包括local本地调用及remote远程调用 文档说明在http://blog.csdn.net/heardy/article/details/6906225

    实战EJB 实战EJB 实战EJB

    1. **定义接口**:包括`remote`和`local`接口。 2. **实现无状态会话Bean**:实现定义的接口。 3. **配置部署描述符**:使用`ejb-jar.xml`指定Bean类型和其他部署信息。 **部署到应用服务器** 1. **打包**:将Bean...

    WTC暴露ejb服务说明

    - EJB的remote home接口类应继承自`weblogic.wtc.jatmi.TuxedoServiceHome`,这是创建和查找EJB实例的入口。 - EJB的bean类中至少有一个方法暴露为服务,例如上面代码中的`service`方法。这个方法会接收Tuxedo传递的...

    javax.ejb.jar下载

    javax.ejb.Local.class javax.ejb.LocalBean.class javax.ejb.LocalHome.class javax.ejb.Lock.class javax.ejb.LockType.class javax.ejb.MessageDriven.class javax.ejb.MessageDrivenBean.class javax.ejb....

    javax.ejb.rar

    javax.ejb.Local.class javax.ejb.LocalBean.class javax.ejb.LocalHome.class javax.ejb.Lock.class javax.ejb.LockType.class javax.ejb.MessageDriven.class javax.ejb.MessageDrivenBean.class javax.ejb....

    EJB3.0中文 版

    ### EJB 3.0 中文版教程知识点总结 #### 1. 教程适用人群与背景 - **目标读者**:本教程旨在为具备Java基础的...通过学习这些知识点,初学者可以快速掌握EJB 3.0的核心概念和技术,并能够在实际项目中应用这些技术。

    EJB3.0__EJB3.0

    `@Local`和`@Remote`注解分别用于声明本地和远程接口。本地接口在同一JVM内的调用,远程接口允许跨JVM的调用。在EJB3.0中,这两种注解使接口的使用更加灵活,无需传统的接口实现方式。 总的来说,EJB3.0简化了传统...

    EJB基础(学习EJB者必看)

    EJB技术还涉及接口和实现的分离,通过远程接口(Remote Interface)和本地接口(Local Interface)使得客户端可以透明地调用bean的方法。此外,EJB 3.0引入了注解(Annotations),简化了bean的配置,使得开发者可以...

    EJB3.0中文文档

    EJB组件需要部署在一个容器中运行,这个容器通常是应用服务器的一部分,例如JBoss、WebLogic或GlassFish等。容器负责提供安全性、事务管理、持久性以及并发控制等功能。 **1.3 什么是JNDI** JNDI(Java Naming and...

    Idea搭建EJB架构Demo项目源代码

    4. **编写bean类**:创建EJB组件,定义接口和实现类,并使用注解如`@Remote`、`@Local`、`@Stateless`、`@Stateful`或`@MessageDriven`。 5. **部署和测试**:将项目打包为`.ear`文件,部署到服务器,然后进行单元...

    Weblogic Ejb 学习笔记

    WebLogic EJB学习笔记主要涵盖了企业级Java Bean(Enterprise JavaBeans,简称EJB)在Oracle WebLogic Server中的应用和管理。EJB是Java EE(Java Platform, Enterprise Edition)平台的核心组件,用于构建可扩展、...

    EJB3+JPA开发总结

    开发只存在Local接口的无状态会话Bean与Remote接口的步骤基本相同,唯一的不同是使用`@Local`注解替代`@Remote`注解。 **示例代码**: ```java @Stateless @Local(LocalService.class) public class Stateless...

    EJB_TEST自己编写的EJB例子

    在EJB_TEST中,我们看到的是作者自编的一个EJB实例,这通常涉及到创建、部署以及运行EJB组件,以便展示其功能和工作原理。 **EJB的组成部分**: 1. **实体Bean (Entity Bean)**:代表业务数据,通常映射到数据库中...

    EJB3规范 简体中文

    - `@Local` 和 `@Remote` 注释符分别用于指定 Bean 的本地接口和远程接口。 - 使用这些注释符可以明确区分 Bean 的不同访问方式,增强代码的清晰度和可维护性。 ##### 3.3 支持 EJB2.1 和早期客户端实现的注释符 -...

    EJB项目的基础配置和测试方法

    EJB项目通常涉及实体Bean(Entity Beans)、会话Bean(Session Beans)和服务端接口(Local或Remote Interfaces)。本文将深入探讨EJB的基础配置和测试方法。 ### 一、EJB项目配置 1. **环境搭建**:首先,你需要...

    javax.ejb.jar

    javax.ejb.Local.class javax.ejb.LocalBean.class javax.ejb.LocalHome.class javax.ejb.Lock.class javax.ejb.LockType.class javax.ejb.MessageDriven.class javax.ejb.MessageDrivenBean.class javax.ejb....

    Mastering EJB 2nd edition

    5. **远程接口**:讨论EJB的客户端调用机制,包括远程接口(Remote Interface)和本地接口(Local Interface),以及它们在分布式环境中的通信方式。 6. **ejb-jar.xml和web.xml**:解析这两个重要的XML配置文件,...

Global site tag (gtag.js) - Google Analytics