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。所以,不管在哪种情况下,请避免修改参数的值

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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
ejb-.xml 是 EJB (Enterprise JavaBeans) 的配置文件,用于配置 EJB 组件的属性和行为。它的具体内容取决于你的 EJB 组件的实现和需要。 以下是一个 ejb-.xml 文件的基本结构: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 3.0//EN" "http://java.sun.com/dtd/ejb-jar_3_0.dtd"> <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" version="3.0"> <!-- EJB 模块的描述 --> <description>My EJB Module</description> <!-- EJB 组件的声明 --> <enterprise-beans> <!-- Session Bean 的声明 --> <session> <!-- Session Bean 的名称 --> <ejb-name>MySessionBean</ejb-name> <!-- Session Bean 的类型 --> <ejb-class>com.example.MySessionBean</ejb-class> <!-- Session Bean 的事务属性 --> <transaction-type>Container</transaction-type> <!-- Session Bean 的声明周期 --> <stateless/> <!-- Session Bean 的 JNDI 名称 --> <ejb-local-ref> <ejb-ref-name>ejb/MySessionBeanLocal</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <local>com.example.MySessionBeanLocal</local> </ejb-local-ref> </session> <!-- Entity Bean 的声明 --> <entity> <!-- Entity Bean 的名称 --> <ejb-name>MyEntityBean</ejb-name> <!-- Entity Bean 的类型 --> <ejb-class>com.example.MyEntityBean</ejb-class> <!-- Entity Bean 的主键 --> <prim-key-class>com.example.MyEntityPK</prim-key-class> </entity> <!-- Message Driven Bean 的声明 --> <message-driven> <!-- Message Driven Bean 的名称 --> <ejb-name>MyMessageDrivenBean</ejb-name> <!-- Message Driven Bean 的类型 --> <ejb-class>com.example.MyMessageDrivenBean</ejb-class> <!-- Message Driven Bean 的消息目的地 --> <activation-config> <activation-config-property> <activation-config-property-name>destinationType</activation-config-property-name> <activation-config-property-value>javax.jms.Queue</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>destination</activation-config-property-name> <activation-config-property-value>queue/MyQueue</activation-config-property-value> </activation-config-property> </activation-config> </message-driven> </enterprise-beans> </ejb-jar> ``` 在这个 ejb-.xml 文件中,你需要指定 EJB 模块的描述、EJB 组件的声明和各个组件的属性。这个文件使用 XML 格式编写,具体的格式和内容可以参考 EJB 规范文档和相关教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值