Ejb-客户端

1.    简介

  我们知道Ejb的客户端仅通过业务逻辑Bean所定义的接口来访问业务逻辑,跟具体实现无关。

  当在开发企业Bean之前,首先要做的第一个决定是,EJB要支持什么样的客户端?因为不同的客户端,其访问方式也将不同,对Ejb的注解也将不同。

  Ejb支持的客户端有如下几种类型:

  ?  本地客户端(客户端与其调用的Ejb对象同一个JVM进程中)

  ?  远程客户端(客户端与其调用的Ejb对象不在同一个JVM进程中)

  ?  WebService客户端

  Ejb的访问方式有如下几种类型:

  ?  Local(本地访问)方式

  ?  Remote(远程访问)方式

  ?  WebMethod方式

  客户端类型与访问方式类型的对应关系如下:

  

  其中本地客户端,即可以采用“Local(本地)”访问方式,也可以采用“Remote(远程)”访问方式。;而远程客户端只能采用Remote(远程)”访问方式;WebService客户端只能采用WebMethod访问方式。

  Web service客户端可以访问无状态会话Bean的接口,只有在业务逻辑方法被标识为@WebMethod的时候,web service客户端才可以访问到!下面主要介绍,Remote、Local两种访问方式与“远程客户端”、“本地客户端“。

2.    两种访问方式

  2.1  远程访问(调用)方式(Remote Access)

  当客户端与Ejb不在同一个JVM进程中时(一个进程代表一个独立的内存空间,两个进程之间是不能通过普通的方式进行调用的,可以通过底层网络通信例如,Socket来沟通),就需要远程访问方式。

  需要注意,远程方式,客户端与服务器之间通信的时候,数据(参数、返回值)需要序列化,而且要用传值(Copy一份)的方式进行传输。调用过程如下图:

  

  2.2  本地访问方式(Local Access)

  由于客户端与其调用的Ejb对象在同一个JVM进程中,所以客户端与服务器之间通信的时候,直接调用即可,不需要底层的网络通信。所以,数据(参数、返回值)不需要序列化,而且直接用传址(引用)的方式进行传输。调用过程如下:

  

3.    两种客户端

  3.1  本地客户端(Local Client)

  一个本地客户端具有如下特性:

  ?  它必须与企业Bean运行在同一个JVM中。(即,需要与Ejb部署到同一服务器中)

  ?  它可能是一个web组件或别的企业Bean。

  ?  为了创建一个能够被本地访问的企业Bean,你必须用@Local注解来定义这些企业Bean。

  ?  本地客户端,不需要添加EJB3_CLIENT 下的jar包,因为运行时JBoss会自动将这些东西放到客户端的目录下。

  注意:一个企业Bean接口可以同时被定义为@Remote和@Local。

本地客户端,既可以通过Local方式访问企业Bean,也可以通过Remote方式方法企业Bean。

  3.2  远程客户端(Remote Client)

  一个远程客户端具有如下特性:

  ?  它可以运行在跟企业Bean不同的机器或不同的JVM进程上

  ?  它可以是web组件、应用客户端、或其它的企业Bean

  ?  对远程客户端来说,企业Bean的位置是透明的

  ?  为了创建一个能够被远程客户端访问的企业Bean,你必须用@Remote注解来定义这些企业Bean。

  注:远程客户端只能通过Remote方式来访问企业Bean。

4.    总结

  因为不同的客户端,其访问方式也将不同。所以,在开发企业Bean之前,首先要做的第一个决定是,EJB要支持什么样的客户端。上面主要介绍了两种客户端、两种客户端访问Ejb的方式。下面是对两者的一个简单对比:

  

  不同的访问方式(Remote、Local、web service),会影响到Bean方法的参数及其返回值。如果是远程调用,客户端操纵的Bean的参数,其实是一份参数值的拷贝。因此,对参数的修改,不会影响到Bean。但是对于本地调用来说,客户端操纵的Bean的参数,就是一个引用,它对参数的修改,将会影响到Bean。所以,不管在哪种情况下,请避免修改参数的值!

  因为远程调用的速度比较慢,所以在设计的时候,请尽量使用粗粒度的接口设计。即尽量减少方法的调用,并尽可能在一次方法调用中传输完毕所需要的数据!

时间: 2024-10-23 20:40:24

Ejb-客户端的相关文章

EJB开发第一个无状态会话bean、开发EJB客户端

开发第一个无状态会话bean EJB中的三中bean: 会话Bean(Session Bean) 负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过JDBC直接操作数据库,但大多数情况下都是通过实体bean来完成对数据库的操作. 实体Bean(Entity Bean) 它实际上属于java持久化规范(JPA)里的技术,JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate.TopLink等ORM框架各自为营的局面. 消息驱动Bean(Messag

九 EJB

一 EJB 1. 定义:EJB 就是一组用 Java 语言编写的包含字段和方法的代码体,而这些代码的核心任务就是实现纯粹的业务逻辑. 2. EJB 和 JavaBean 的相同点: a) 都有 get 和 set 方法 b) 都是可重用组件 c) 都可以进行组装来构建 Java 应用 3. EJB 和 JavaBean 的不同点: a) JavaBean 比 EJB 小 b) JavaBean 是开发组件,而 EJB 是部署组件. 4. EJB 在一个系统中扮演的角色: a) 封装业务逻辑 (会

EJB 介绍

EJB 编辑 EJB是sun的服务器端组件模型,设计目标与核心应用是部署分布式应用程序.凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台.EJB (Enterprise JavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准.其特点包括网络服务支持和核心开发工具(SDK). 在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),

javax.ejb.SessionBean

import javax.ejb.SessionBean;import javax.ejb.SessionContext;import javax.ejb.CreateException; //有状态会话bean//多个客户端调用服务器的ejb时,实际上,服务器端只生成一个ejb对 象为其服务,//顺序是:构造函数->setSessionContext->ejbCreate(),目的是节省内存//客户端可以命令服务端ejb消亡, remote.remove(); //在有状态Bean下,可以消

使用JMeter测试你的EJB

对EJB进行一些性能基准测试是非常有必要和有帮助的,测试的方法和工具有很多,不过我最近发现,Apache JMeter是进行基准测试的一个优秀工具.可惜的是,JMeter没有提供一个可测试任意EJB的通用取样器(sampler),不过,我们可以自己动 手来创建一个. 首先,让我们简单的了解一下Apache JMeter,它是一个100%的纯Java桌面应用,可用于压力测试和性能测量.它最初被设计用于Web应用测试但后来扩展到其他测试领域. 在本篇文章中,我使用JBoss应用服务器来运行我的EJB

EJB初级篇--EJB组件之会话Bean

上篇博文中我们已经详解介绍了什么是EJB.其实最简单的说:EJB就是运行在独立服务器上的组件,客户端是通过网络对EJB对象进行调用的.而我们常说的企业Bean组件可以分为三种类型:会话Bean.消息驱动Bean和实体Bean.依据应用设计的不同,开发者可以选择适合应用的组件类型.下面几篇博文中我会为大家分别详细的介绍这三种企业Bean组件.本篇博文则就先来介绍介绍会话Bean吧. 首先来介绍一下,什么是会话Bean.会话Bean能够完成客户所要求的业务操作,它是含有业务逻辑的可重用组件,并能够用

Spring之Enterprise JavaBeans (EJB) integration

原文地址:需要翻墙 https://translate.google.com/translate?hl=zh-CN&sl=zh-CN&tl=zh-CN&u=http%3A%2F%2Fdocs.spring.io%2Fspring-framework%2Fdocs%2Fcurrent%2Fspring-framework-reference%2Fhtml%2Fejb.html&sandbox=1 22.1 介绍 作为一个轻量级容器,Spring被认为是EJB的替代品.我们确实

EJB初级篇--EJB组件之实体Bean

上文我们对会话Bean的生命周期和两个子类型(有状态会话Bean和无状态会话Bean)进行了详细解说,本篇博文中我们继续说说EJB组件中的实体Bean. 其实实体Bean就是一个加了注释符(@Entity)的简单java对象(POJO),实体关系和O/R映射也是通过注释符来定义的,并且提供了几种不同的数据库操作规范.一旦被EntityManager访问,它就成为了一个持久化对象,我们就可以像以前使用Hibernate一样来使用实体对象了. 下图是实体Bean的内容结构图,方便我们宏观的了解实体B

EJB开发第二期---开发具有本地接口的无状态Bean

一.EJB中的bean 1.1 EJB中bean分类 会话bean(session bean) 负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过jdbc直接操作数据库,但大多数情况下都是通过实体bean来完成对数据库的操作. 实体bean(entity bean) 它实际上属于java持久化规范(简称JPA)里的技术,JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate.TopLink等ORM框架各自为营的局面. 消息驱动bean(messa

java面试题大全

java面试笔试题大汇总     第一,谈谈final, finally, finalize的区别. 最常被问到. 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统). 第四,&和&&的区别. 这个问得很少. 第五,HashMap和Hashtable的区