javax.ejb.SessionBean

简介: import javax.ejb.SessionBean;import javax.ejb.SessionContext;import javax.ejb.CreateException; //有状态会话bean//多个客户端调用服务器的ejb时,实际上,服务器端只生成一个ejb对 象为其服...

 

import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.CreateException;

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

 remote.remove();

 

//在有状态Bean下,可以消亡其ejb
//客户端在调用create()方法时就生成ejb对象,没有延迟加载
//特点:你可以用成员变量来定义一些状态信息,你可以用额外的ejbCreate()来初始化这些状态信息
//状态会话Bean其实也可以定义成员变量,但是这些成员变量必须是所有客户共享的如数据库连接,有状态会话Bean可以定义自己的变量
//缺点:消耗资源
//解决办法:服务器:1钝化机制,长期不用的EJB对象,被暂时保存在缓存中,腾出内存,自动调用ejbPassivate(),如果长期不用,服务器自动调用remove()
//2:客户端在使用时要将对应的ejb对象消亡,一般情况下是将远程接口保存在session中,在退出系统时,调用其remove()方法
//尽量不使用有状态的会话Bean,因为可以用Web中有session一来保存状态
public class RnbEjbBean implements SessionBean {

 

    SessionContext sessionContext;

 

    public RnbEjbBean() { //ejb创建时,自动调用
        System.out.println("RnbEjbBean");
    }

 

    public void ejbCreate() throws CreateException { //ejb创建时,自动调用
        System.out.println("ejbCreate");
    }

 

    public void setSessionContext(SessionContext sessionContext) { //ejb创建时,自动调用,初始化的工作可以写在这儿
        this.sessionContext = sessionContext;
        System.out.println("setSessionContext");
    }

 

    public void ejbRemove() { //从接口重写,当ejb消亡时调用,释放资源的代码可以写在这儿
        System.out.println("ejbRemove");
    }

 

    public void ejbActivate() {//从接口重写,在无状态会话 bean中无用,钝化状态到活动状态时调用,
        System.out.println("RnbEjbBean");
    }

 

    public void ejbPassivate() { //从接口重写,会话 bean中用,钝化时用
        System.out.println("ejbPassivate");
    }

 


    public double getRmb(double usd) { //业务逻辑的实现,不能曝露给客户端,和远程接口中的getRmb方法对应
        System.out.println("getRmb");
    }

 

http://blog.sina.com.cn/s/blog_48cbe4d90100bdhl.html

 

相关文章
|
前端开发 Java 开发者
深入理解Spring Boot中的@Service注解
【4月更文挑战第22天】在 Spring Boot 应用开发中,@Service 注解扮演着特定的角色,主要用于标识服务层组件。本篇技术博客将全面探讨 @Service 注解的概念,并提供实际的应用示例,帮助开发者理解如何有效地使用这一注解来优化应用的服务层架构
2753 1
|
算法 计算机视觉 异构计算
基于FPGA的图像RGB转HSV实现,包含testbench和MATLAB辅助验证程序
基于FPGA的图像RGB转HSV实现,包含testbench和MATLAB辅助验证程序
|
人工智能 运维 安全
阿里云通过ISO42001人工智能管理认证,引领AI治理推动协同共治
9月19日,在杭州云栖大会「AI治理与安全论坛」上,阿里云宣布通过人工智能技术的全生命周期管理ISO42001体系认证。该项认证由国际标准化组织(ISO)和国际电工委员会(IEC)制定,是第一部可认证的人工智能国际管理体系标准。
567 14
|
安全 Java 网络安全
构建一个安全的电子商务平台
【8月更文挑战第13天】构建一个安全的电子商务平台需要从多个方面入手,包括选用安全的开发语言和框架、强化数据加密与认证机制、构建安全的支付系统、加强服务器与网络安全、遵循安全标准和法规、定期进行安全审计与培训以及建立应急响应与灾难恢复机制等。只有全面考虑并落实这些最佳实践,才能确保电子商务平台的安全性和可靠性。
|
开发工具 git 开发者
git IDEA的分支合并时的冲突问题总结,merge和rebase的区别
冲突的处理需要开发者之间的充分沟通以及对项目历史的细致理解。选择Merge或Rebase取决于具体的工作流程和团队偏好,但最重要的是保持代码库的整洁与一致性。使用IDEA等工具可以提高处理合并冲突的效率,但手动解析冲突和理解操作背后的逻辑仍然是不可或缺的。最终目标是通过有效的版本控制实践,促进项目的顺利进行和团队协作的高效。
1098 0
|
11月前
|
监控
DDN是什么,DDN专线的优势详解
数字数据网(DDN)是一种利用数字信道提供稳定、可靠的数据信号传输服务的网络。它支持点到点的数字传输,适用于大数据量、高实时性和强保密性的需求,如数据、图像和话音传输。DDN具有连接灵活、服务多样和技术成熟等优点,适合商业和金融等行业使用。与SDH和ISDN相比,DDN不具交换功能,但能提供更广泛的传输速率和更高的灵活性。
768 8
|
JavaScript Java API
Java日志通关(二) - Slf4j+Logback 整合及排包
作者日常在与其他同学合作时,经常发现不合理的日志配置以及五花八门的日志记录方式,后续作者打算在团队内做一次Java日志的分享,本文是整理出的系列文章第二篇。
|
SQL 弹性计算 关系型数据库
PostgreSQL 12 preview - CTE 增强,支持用户语法层控制 materialized 优化
标签 PostgreSQL , CTE , materialized , not materialized , push down 背景 PostgreSQL with 语法,能跑非常复杂的SQL逻辑,包括递归,多语句物化计算等。 在12以前的版本中,WITH中的每一个CTE(common table express),都是直接进行物化的,也就是说外层的条件不会推到CTE(物化节点)里
1197 0
|
存储 缓存 Java
Sonar扫描之SonarScanner介绍
Sonar扫描之SonarScanner介绍
1679 0