当前位置: 首页 > news >正文

【java】EJB(Enterprise Java Bean)概述

EJB概述目录

  • 一、什么情况下需要企业Bean
    • 需要使用EJB的N个理由
  • 二、EJB的基本分类
    • 2.1、Enterprise Bean
    • 2.2、 Message Driven Bean(MDB)——消息驱动Bean,基于JMS
  • 三、定义客户端访问的接口
    • 3.1、 远程客户端——客户端与其调用的EJB对象不在同一个JVM进程中
    • 3.2、本地客户端——客户端与其调用在同一个JVM进程中
    • 3.3、 WebService客户端

一、什么情况下需要企业Bean

企业Bean运行在EJB容器中。企业Bean实际上就是一个封装了业务逻辑的Java类。

需要使用EJB的N个理由

1、分布式!分布式对象之间的相互协作,完成特定的业务功能。分布式对象之间应实现分布透明性(或位置透明性)。即在客户端代码中无需指定分布式对象的位置(通过配置来解决)。

2、分布式对象之间的事务支持(RMI不支持事务)。

3、应用程序需要支持不同的客户端,只需要少量的代码,就可以让远程客户端访问到企业Bean。

so,如果你的应用需要分布式部署,+分布式对象需要支持事务+关键业务逻辑需要能够支持不同类型的客户端,那么EJB将是很好的选择。

二、EJB的基本分类

2.1、Enterprise Bean

  • Session Bean (会话Bean) :会话Bean可以执行业务逻辑操作,比如注册用户,订单登记,数据库操作等等。
    (会话(session):即从客户端获取EJB对象开始,然后调用EJB方法(可以多次),直到客户端生 命周期结束,或客户端释放了EJB对象为止,成为一次会话。随着会话的终止,EJB对象也有可能会被EJB容器销毁。
    对象的状态:对象的状态是由其实例变量的值组成的。)

  • tateless Session Bean——无状态会话Bean
    (并非是说EJB不能存在状态,而是说EJB容器不会对EJB的状态做管理
    容器会使用实例池的方式,甚至单例的方式来实现无状态Session Bean
    因为EJB容器不会对stateless session bean的状态进行管理,所以它的性能要比stateful session bean 的好)
    Steteful Session Bean——有状态的会话Bean
    ( 有状态的会话Bean:即EJB能够为同一个客户端在多次请求(方法调用)之间保持状态信息。)

2.2、 Message Driven Bean(MDB)——消息驱动Bean,基于JMS

Persistence——持久化

Entity Bean——实体Bean

三、定义客户端访问的接口

客户端仅通过业务逻辑Bean所定义的接口来访问业务逻辑(跟具体实现无关)。

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

3.1、 远程客户端——客户端与其调用的EJB对象不在同一个JVM进程中

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

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

2,它可以是web组件,应用客户端,或其他企业Bean

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

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

3.2、本地客户端——客户端与其调用在同一个JVM进程中

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

1,它必须与企业Bean运行在同一个JVM中

2,它可能是一个Web组件或别的企业Bean

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

4,一个企业Bean接口可以同时被定义为@Remote和@Local

3.3、 WebService客户端

webservice客户端可以访问无状态会话Bean接口,只有在业务逻辑方法被标识为@webMethod的时候,web service 客户端才可以访问到。

http://www.lryc.cn/news/87.html

相关文章:

  • Android 10.0 Launcher3桌面禁止左右滑动
  • 日期类的实现
  • 2022年这5款熟悉的软件退出了历史舞台
  • 用Nginx打包部署vue3项目及404和500解决
  • Java面试——多线程并发篇
  • 维基百科数据抽取
  • 2020年因果推断综述《A Survey on Causal Inference》
  • 嵌入式linux系统测试程序编写
  • 力扣SQL刷题5
  • 动态规划详解(完结篇)——如何抽象出动态规划算法?以及解题思路
  • C语言一维数组篇【下】——每日刷题经验分享
  • VHDL语言基础-组合逻辑电路-其它组合逻辑模块
  • 初识Vue
  • TOUGH系列软件建模实践方法及在地下水、CO2地质封存、水文地球化学、地热等多相多组分系统多过程耦合
  • Codeforces Round #699 (Div. 2)
  • MySQL存储过程的传参和流程控制
  • MySQl学习(从入门到精通11)
  • 关于ThreadLocal
  • 【C++】类和对象(中)
  • js下载文件
  • ESP8266 + STC15+ I2C OLED带网络校时功能的定时器时钟
  • 计算机入门基础知识大全
  • Python程序出现错误怎么办?
  • 【Vue3】v-if和v-for优先级
  • Windows上实现 IOS 自动化测试
  • Linux云服务器下怎么重置MySQL8.0数据库密码
  • JVM调优
  • 【配电网规划】SOCPR和基于线性离散最优潮流(OPF)模型的配电网规划( DNP )(Matlab代码实现)
  • 锦正茂EM3电磁铁的技术参数
  • Go最新版下载 Go1.20版新特性