每章一篇博客带你拿下吉林大学JAVAEE期末(七:会话Bean)

这篇具有很好参考价值的文章主要介绍了每章一篇博客带你拿下吉林大学JAVAEE期末(七:会话Bean)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.会话Bean分类

1)无状态会话Bean
  • 无状态会话Bean不维持和客户端的会话状态
  • 当方法结束的时候,客户端特定的状态就不会被保持。
  • 允许EJB容器将一个实例分配给任意一个客户端。
    多接口会话bean,笔记,java-ee,java,前端
2)有状态会话Bean

有状态会话Bean是一种保持会话状态的服务,每个实例都与特定的客户端相关联,在与客户端的方法调用之间维持对话状态
多接口会话bean,笔记,java-ee,java,前端

3)单例会话Bean
  • 单例会话Bean在每个应用程序中只被实例化一次,在整个应用程序的生命周期中存在。
  • 单例会话Bean提供了和无状态会话Bean类似的功能,区别是单例会话Bean在每个应用程序中只有一个实例,而无状态会话Bean会有一个实例池多接口会话bean,笔记,java-ee,java,前端

2.会话Bean组成

1)业务接口
  • 远程接口
  • 本地接口
2)EJB实现类

多接口会话bean,笔记,java-ee,java,前端

3.无状态会话Bean开发方法

无状态会话Bean客户端通过JNDI引用会话Bean,在客户端通过JNDI访问会话Bean的远程接口的方法有两种:

使用通用JNDI API:
  • 别忘了四个要素(服务器命名和目录管理地址,上下文环境工厂,用户名,密码。然后ctx= new InitialContext(property),通过ctx.lookup查找对象,再强制转换为需要的类型)为什么JNDI可以找到别忘了会话Bean的运行原理部署到服务器后会将JNDI命名发布。
使用EJB Client API:
  • 新建一个普通Java Project工程,把jboss-client.jar加入到项目;
  • 将HelloBeanRemote.java文件按照原有路径拷贝到本工程中;
  • 创建客户端测试文件StatelessRemoteClient.java (带有main函数)
  • 在src目录下添加“jboss-ejb-client.properties”文件。
本地访问:
  • 使用通用JNDI API
  • 依赖注入:@EJB

4.无状态会话Bean的生命事件

  • 在无状态会话Bean中有两个重要的函数PostConstructPreDestroy
  • PostConstruct事件在组件对象生成的瞬间触发,通常用于对整个无状态会话Bean组件对象状态进行初始化。PreDestroy事件发生在组件对象将要被销毁的前一瞬间,通常用于释放组件对象使用过的资源。在整个EJB组件生命周期中,PostConstruct事件和PreDestroy事件只会被触发一次
PostConstruct事件

在无状态会话Bean组件对象创建过程中被触发,表示一个EJB组件对象的生成。通常EJB服务器创建EJB组件对象需要经过三个步骤:EJB容器首先调用EJB组件的Class.newInstance()方法生成一个组件对象;然后EJB组件服务器会将组件的XML配置文件或类似@Resource等标注所包含的初始信息,设置给刚生成的EJB组件对象;最后触发PostConstruct事件,以便进一步行组件自身状态的初始化

PreDsstory事件

它是EJB组件对象被销毁过程中的触发事件。在该事件的处理方法结束前,EJB组件对象仍旧是一个完整对象,同样可以进行各种操作和调用。该事件的处理方法结束后,EJB组件上的各种引用就被销毁,组件对象进入等待Java垃圾收集线程销毁过程。

5.无状态会话Bean生命周期

多接口会话bean,笔记,java-ee,java,前端
三种状态的介绍自己看ppt吧,我觉得知道这个转换就够了。

6.有状态会话Bean生命周期

多接口会话bean,笔记,java-ee,java,前端

PostConstruct事件

和无状态会话bean类似,但是ppt强调了 由于有状态会话Bean实例在构造过程中,系统会调用一个不带任何参数的构造方法,因而要求有状态会话Bean组件必须提供一个不带任何参数默认构造方法,否则组件对象在过程中会产生异常。

PreDestroy事件

和无状态会话Bean类似,对组件用过的资源进行释放

PrePassivate事件

当一个处于活动状态的有状态会话Bean对象长时间不使用时,EJB服务器通常会将该组件对象切换到休眠状态(钝化)。EJB组件休眠的本质是将EJB组件对象的状态当前环境状态统一保存起来,然后将对象从内存中删除。

PostActive事件

当有状态会话Bean对象由休眠状态切换到活动状态后,会马上触发EJB组件上的PostActive事件。在该方法中可以对EJB组件中的状态进行一些休眠后的恢复工作

7.有状态会话Bean和无状态会话Bean的区别

  • 组件对象进入休眠(缓存状态)的时刻
    有状态会话Bean进入休眠状态,通常是因为对应的组件对象长时间不被使用,或服务器负载十分重的情况下才会发生;而无状态会话Bean在一个方法执行完毕后就会被释放到实例池中。

  • 组件对象在休眠状态或缓存状态的差别
    无状态会话Bean进入缓存状态后,其对应的对象在服务器上还存在;而有状态会话Bean对象进入休眠状态后,其EJB组件对象被销毁,只是其对象状态被保存到了硬盘或数据库中。

  • 组件对象进入休眠或(缓存状态)时,EJB服务器所保留的组件数据
    无状态会话Bean组件对象进入缓存状态后,其被保留的是组件上下文环境;而有状态会话Bean组件对象进入休眠状态时被保存的不但是EJB组件的上下文环境,而且还包括EJB组件的各种属性状态。

8.单例会话Bean开发方法

  • 容器管理并发CMC:EJB容器控制客户端访问单例会话Bean的业务方法,其使用 @Lock 标注来指定当客户端调用方法是容器如何管理并发。@Lock的值可以为READWRITE
  • Bean管理并发BMC:需要使用 @ConcurrencyManagement(BEAN) ,并且利用Java编程语言的同步原语进行同步控制,例如synchronized和volatile。

9.单例会话Bean生命周期

与无状态会话Bean类似。

10.多接口会话Bean

一个会话Bean可以实现多个Remote型或者Local型接口,这类似于一个类实现了多个接口的情况。但不能在同一个接口上既使用@Remote,又使用@Local。
多接口会话bean,笔记,java-ee,java,前端文章来源地址https://www.toymoban.com/news/detail-534378.html

11.会话Bean异步调用

  • 默认情况下,通过远程接口、本地接口或无接口视图调用会话Bean是同步的通信方式:客户端调用一个方法,然后客户端被阻塞,直到被调用方法处理完成返回结果给客户端,客户端才能继续以下的工作。
  • 在EJB 3.1之前,异步调用只能通过JMSMDB来实现。在EJB 3.1规范中,你可以在一个会话Bean的方法上添加一个 @javax.ejb.Asynchronous标注来实现异步调用
  • 异步调用可以返回void也可以返回Future对象
  • Future对象允许在另外一个线程中执行的方法返回一个值,而客户端可以使用Future.get() 方法来获得结果, 使用Future.cancel() 方法终止调用。

到了这里,关于每章一篇博客带你拿下吉林大学JAVAEE期末(七:会话Bean)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 校企联盟-触觉智能正式成为吉林大学实习实践基地

    近日,触觉智能与吉林大学正式达成了实习实践基地合作,这个合作的达成标志着双方在教育与企业之间搭建了一座连接的桥梁,让高校老师科研项目更贴近市场需要,让优秀的科研成果得到有效转化,让优秀应届大学生获得更多理论实践锻炼机会,也为触觉智能注入了新的

    2024年01月24日
    浏览(36)
  • 2022级吉林大学面向对象第一次上机测试

    1、 1)略 2)如果main,f1,g1,g2或更多的函数之间有更为复杂的调用关系,头文件一般按怎样的规律写呢? 一般情况下,头文件应按照以下规律编写: 头文件名应与包含的函数或类名有关 在头文件中应包含必要的预处理指令,例如#ifndef、#define和#endif,以避免重复包含 应包含函

    2024年02月03日
    浏览(43)
  • 2022级吉林大学面向对象第三次上机测试

    运算符重载、动态内存管理 1.已知字符串类MyString的定义为: 全局函数: const MyString operator + (const MyString ,const MyString );//字符串连接 ostream operator(ostream os, const MyString str); //定向输出 请完整实现MyString类和指定的全局函数。(可以使用new,delete运算以及strcpy,strlen,…等库函数

    2024年02月06日
    浏览(39)
  • 常用math.h数学函数以及其他函数(吉林大学 孙立鑫)

    目录   1.math.h 头文件的常用函数    a.signbit(求浮点数是否含有符号)    b.三角函数汇总    c.双曲函数    d.指数函数对数函数    e.分解浮点数(详解如下)frexp    f.取浮点数的指数部分ilogb    g.反分解浮点数(详解如下)ldexp    h.浮点数的取整和取小 modf    i.四舍

    2024年02月05日
    浏览(41)
  • [保研/考研机试] KY180 堆栈的使用 吉林大学复试上机题 C++实现

    堆栈的使用_牛客题霸_牛客网     堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。其中 push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。 输入描述:     对于每组测试数据,第一行是一个正整数 n(0 n = 1

    2024年02月13日
    浏览(37)
  • 【C语言】一篇博客带你弄懂最大公约数和最小公倍数

    我们在C语言的学习中,经常会遇到这样一些数学题目,良好掌握这些题目有利于我们理解和学习C语言,话不多说,直接进入主题 最大公约数: 首先我们举个例子,比如12 和16,12的约数有(1,2 ,3,4,6,12),16的约数有(1,2,4,8,16)公约数就是两个数共同的约数,(1,2,4)而公约数

    2024年02月04日
    浏览(38)
  • ElasticSearch篇——认识、安装和使用IK分词器插件,一篇文章带你彻底拿下!

    一、什么是IK分词器 所谓分词,即把一段中文或者别的划分成一个个的,我们在搜索时会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配的操作,默认的中文分词器是将每一个字看成一个词,比如“我爱中国”会被分成“我”、

    2024年02月03日
    浏览(31)
  • 一篇博客读懂排序

    目录 一、常见的排序 二、冒泡排序  2.1基本思想: 2.2代码: 三、插入排序 3.1基本思想: 3.2思路讲解: 3.3代码: 3.4时间复杂度: 四、希尔排序 4.1基本思路: 4.2思路讲解: 4.3代码: 4.4时间复杂度: 五、选择排序 5.1基本思路: 5.2思路讲解: 5.3代码: 5.4时间复杂度: 六、

    2024年01月25日
    浏览(37)
  • 第一篇博客记录test

    调试vs Code查看使用test 知识不在广泛,在于精通。知识不在积累,在于消化。 学习不在激情,在于坚持。书不在多,一两本真正看懂就行。书读百遍,其义自现。 随笔 - 897, 文章 - 1, 评论 - 81, 阅读 -  158万 目录 一、将vscode定制为markdown编辑器 1、Markdown all in one插件 2、Markdo

    2024年04月24日
    浏览(19)
  • 一篇博客理解Recyclerview的使用

    从Android 5.0开始,谷歌公司推出了RecylerView控件,当看到RecylerView这个新控件的时候,大部分人会首先发出一个疑问,recylerview是什么?为什么会有recylerview也就是说recylerview的优点是什么?recylerview怎么用?等等,下面我们将深入解析recylerview。 RecyclerView是support-v7包中的新组件,

    2024年02月07日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包