EJB—从EJB会话bean访问EJB实体bean

【EJB】会话Bean(Session Bean) 很多程序员,整天沉浸在业务代码的 CRUD 中,业务中没有大量数据做并发,缺少实战经验,对并发仅仅停留在了解,做不到精通,所以总是与大厂擦肩而过。我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取! 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

读者:开发人员

产品:WebSphere Application Server

版本:3.0.2.x、3.5.x 和 4.0

平台:所有

关键字:Servlet、JSP 和 EJB

摘要

使用 EJB 会话 bean 访问 EJB 实体 bean。通过用会话 bean 包装实体 bean,您能获得更佳性能。这加强了通过活动的进程对象包装被动的数据实体对象这一有效的对象模型概念。然而,可以编写 EJB 客户机来直接访问实体 bean,但是这样以性能为代价。通过用会话 bean 包装实体 bean 可以获得最佳性能。

建议

避免从客户机或 servlet 代码访问 EJB 实体 bean。这个最佳实践满足了两个性能方面的问题:

  • 减少远程方法调用的数目。当客户机应用程序直接访问实体 bean 时,每个读方法就是一个远程调用。包装会话 bean 能在本地访问实体 bean,将数据收集在一个结构中,接着返回一个值。


  • 为 EJB 实体 bean 提供外部事务上下文。在每个事务完成时,实体 bean 使其状态与其底层数据存储同步。当客户机应用程序直接访问实体 bean 时,每个读方法成为一个完整的事务。存储和载入跟随在每个方法后面。当会话 bean 包装实体 bean 来提供外部事务上下文时,实体 bean 在外部会话 bean 到达事务边界时使其状态同步。

一种更好的方法是从 EJB 会话 bean 访问 EJB 实体 bean。以下是 EJB 会话 bean 包装 EJB 实体 bean 的一个示例:

EJB 会话 bean 包装 EJB 实体 bean


 import java.rmi.RemoteException;

 import java.security.Identity;

 import java.util.Properties;

 import javax.ejb.*;

 import com.ibm.uxo.bestpractices.datamodels.*;



 public class EmployeeRosterBean implements SessionBean {

    private EmployeeHome employeeHome;

    private javax.ejb.SessionContext mySessionCtx = null;

    final static long serialVersionUID = 3206093459760846163L;



    public void ejbCreate() throws javax.ejb.CreateException,

	    java.rmi.RemoteException {

        employeeHome = EmployeeEjbHomeCacheHelper.getEmployeeHome()}



    public EmployeeStruct getEmployeeInfoFor(String empno) {

        Employee theEmployee = null;

        EmployeeStructure returnValue = new EmployeeStructure();



        try {

            theEmployee = employeeFindByPrimaryKey(new EmployeeKey(empno));



            returnValue.setSex(theEmployee.getSex());

            returnValue.setSalary(theEmployee.getSalary());

            returnValue.setPhoneno(theEmployee.getPhoneno());

            returnValue.setMidinit(theEmployee.getMidinit());

            returnValue.setLastname(theEmployee.getLastname());

            returnValue.setJob(theEmployee.getJob());

            returnValue.setHiredate(theEmployee.getHiredate());

            returnValue.setFirstnme(theEmployee.getFirstnme());

            returnValue.setEmpno(empno);

            returnValue.setEdlevel(theEmployee.getEdlevel());

            returnValue.setComm(theEmployee.getComm());

            returnValue.setBonus(theEmployee.getBonus());

            returnValue.setBirthdate(theEmployee.getBirthdate());

            returnValue.setWorkDept(theEmployee.getWorkdept());

        } catch (Exception e) {

            e.printStackTrace();

        }

        return returnValue;

    }



    public void ejbActivate() throws java.rmi.RemoteException {}

    public void ejbPassivate() throws java.rmi.RemoteException {}

    public voide ejbRemove() throws java.rmi.RemoteException {}

 } 	 

备选方案

下列代码段说明了使用 servlet 从客户机代码直接访问 EJB 实体 bean。图 1显示了直接访问相对于使用 EJB 会话 bean 来包装 EJB 实体 bean 的性能影响。

EJB 实体 bean 的直接客户机访问


public class BpEmploymentServletV0 extends HttpServlet {



public void service(HttpServletRequest request, HttpServletResponse response) {



    EmployeeHome employeeHome = null;

    Employe employee = null;



    try {

        ServletOutputStream out = response.getOutputStream();

        employee = employeeHome.findByPrimaryKey(new EmployeeKey(empno));

        out.println("<html><body>");

        out.println("<BR><B>" employee.getFirstnme() "</B>");

        out.println("<BR><B>" employee.getLastname() "</B>");

        out.println("<BR><B>" employee.getSex() "</B>");

        out.println("<BR><B>" employee.getBirthdate().toString()   </B>");

        out.println("<BR><B>" employee.getEdlevel() "</B>");

        out.println("<BR><B>" employee.getJob() "</B>");

        out.println("<BR><B>" employee.getHiredate() "</B>");

        out.println("<BR><B>" employee.getWorkdept() "</B>");

        out.println("<BR><B>" employee.getPhoneno() "</B>");

        out.println("<BR><B>" employee.getSalary.toString() "</B>");

        out.println("<BR><B>" employee.getComm().toString() "</B>");

        out.println("<BR><B>" employee.getBonus().toString() "</B>");

        out.println("</body></html>");



    } catch (Exception e) {



       e.printStackTrace();

    }

  }

} 


图 1. 将 EJB 实体 bean 包装在 EJB 会话 bean 内的性能影响

参考资料

作者

Harvey W. Gunther 是 IBM 在北卡罗来纳州罗利市(Raleigh)的 WebSphere 产品开发组的一名高级性能分析师。可以通过 hgunther@us.ibm.com 与他联系。

国产MCU替代STM32的5个隐藏坑:从Pin-to-Pin兼容到电气参数差异全解析 在嵌入式开发中,MCU选型往往决定项目成本与供应链稳定性。随着国产芯片崛起,越来越多团队开始评估用GD32、AT32、APM32等型号替代传统STM32方案。然而,所谓的Pin-to-Pin兼容只解决了物理封装问题,寄存器映射、时钟树配置、电气特性乃至Flash擦除机制都可能存在隐性差异。从GPIO灌电流能力到BOOT引脚内部上下拉,从HSE起振失败到外设寄存器位定义偏移,任何一个细节都可能导致产品“烧录成功却跑不起来”或“运行数天后莫名故障”。本文结合真实量产项目中的排查经历,系统梳理国产MCU替代过程中 阅读详情

相关推荐

9、EJB开发与使用全解析

本文详细解析了EJB的开发与使用,涵盖无状态和有状态会话Bean的部署与测试,实体Bean的持久化机制(BMP与CMP),以及消息驱动Bean的配置。同时介绍了WebLogic数据库访问、连接池和数据源的创建,以及EJB开发的最佳实践。适合希望深入了解EJB开发的企业级Java开发者参考。

app77的博客 71

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

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

孙端 4668

8、EJB会话Bean与JPA实体:开发与应用指南

本博客详细介绍了EJB会话Bean和Java持久化API(JPA)的开发与应用,涵盖会话Bean的部署与运行、JPA实体的定义与注解、实体关系配置、JPQL查询、持久化与适配等内容。通过示例应用程序展示了EJB与JPA在企业级Java应用中的实际使用,帮助开发者掌握相关核心技术。

sea99的博客 83

EJB--实体Bean

现在咱们说一下EJB中最后一个Bean,实体Bean,那么他是干什么用呢?和数据库打交道,既然说到了和数据库打交道,那就不得不说还有一个东东:POJO,什么事POJO:POJO的内在含义是指那些没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。而且在EJB3.0有了以后,持久化已经自称规范,java persistence interface Api。 那么概念就简单的介绍

ermuv5 822

Jboss下开发ejb应用之一实体bean的应用

NULL 博文链接:https://fruitking.iteye.com/blog/563093

VOF模型求解方法:从SIMPLEC到PISO的稳定性优化策略

本文深入探讨了VOF模型求解方法中SIMPLEC与PISO算法的稳定性优化策略,重点分析了两种算法在稳态和瞬态问题中的应用差异。通过对比PRESTO离散化方法与其他格式的优劣,提供了针对多相流模拟的实用设置建议和稳定性优化技巧,帮助工程师有效提升计算效率和精度。

yellow的专栏 1154

【EJB学习笔记】——实体Bean

实体Bean跟普通的Java实体并无多大差异,在EJB中的实体Bean用@Entity注解定义。  实体Bean开发步骤如下: JBoss配置配置JBoss数据源  这里用的数据库为mysql  拷贝数据库驱动(mysql驱动)到JBoss的server\default\lib目录下   添加数据源配置文件   在JBoss的docs\examples\jca目录下有各种数据库的配置文件,这里把m

点滴汇聚,智在积累。——Danny 1740

从ENVI SARscape到SNAP:手把手教你迁移哨兵1 GRD数据预处理流程(含避坑指南)

本文详细介绍了从ENVI SARscape迁移到SNAP处理哨兵1 GRD数据的全流程,包括工具哲学差异、数据准备注意事项、核心处理流程等效实现及地形校正技巧。特别针对雷达数据预处理中的常见陷阱提供避坑指南,帮助用户高效完成工具迁移并确保结果质量。

weixin_28677005的博客 486

EJB3.0开发指南:实体Bean

 在EJB3.0中开发实体Bean非常简单,你可以象开发一般的java bean一样编程,只需做少量的注释。一个实体bean不需要实现Home接口或者Remote、Local接口。实体Bean通过EntityManager产生、查找、和持久层结合、从持久层收回等操作。JBoss的EJB3.0架构在Hibernate之上。 注释:@Entity:如果你要建立一个实体Bean的类,你必须在类上加上这个

zaowei21的专栏 1435

Windows10开机无限蓝屏(SrtTrail.txt)

这个问题已经有很多的大佬发过解决办法了,这里仅仅作为自己日后方便查找所写文章 无法开机——自动修复失败,报SrtTrail.txt文件错误,且陷入无限蓝屏的循环 事故 故事的起因是这样的: 开开心心的组装电脑,花了几天时间来配置,然后发现USB3.0的接口太少,于是在某宝上搞到一张pcie转7口USB3.0的转接卡,往电脑上一插 插电,开机,电流轻松跑上去 然后,它和原来的磁盘阵列卡冲突,跳过阵列卡自检直接进入系统,boom,就导致了这场悲剧 解决方法 在蓝屏的界面找到:疑难解答->通过命令提示符 使

Holo__的博客 3万+

彻底解析 DDIC_TYPE_INCONSISTENCY:从 ABAP ST22 连环 Dump 到 SE14 一键修复

听上去像内核级的致命故障,实则更多源于日常运维的细枝末节。只要掌握的排查三板斧,结合严格的变更流程与周期性的字典体检,再严重的 Dump 也能化险为夷。希望本文的案例与步骤能帮助读者在下一次遇到类似问题时,既能快速止血,也能追根溯源,避免重蹈覆辙。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 629

EJB3.0实体Bean(一)

现在EJB3 实体Bean是纯粹的POJO,可以像开发一般的java bean一样编程,只需做少量的注释来定义实体关系及O/R 映射等。6.1 实体Bean 的组成文件persistence.xml 配置一个实体Bean 由实体类和persistence.xml 文件组成。persistence.xml 文件在Jar 文件的META-INF目录。persistence.xml 文件指定实体Bean

cocojiji5的专栏 1334

PLC凸轮开关指令编程应用——控制算法

凸轮开关指令的作用是在PLC程序中根据凸轮开关(Cam Switch)的状态执行不同的操作。凸轮开关通常是机械式的开关装置,它的位置会随着机械运动的变化而改变。凸轮开关的状态可以用来检测机器的位置、角度或其他相关信息,从而触发相应的控制动作。总结起来,凸轮开关指令是PLC编程中常用的一种控制算法,通过检测凸轮开关的状态来触发相应的操作。本文将介绍凸轮开关指令的应用和相应的控制算法,并提供相关的源代码示例。在这个示例中,凸轮开关状态的值代表不同的位置,根据凸轮开关状态的不同,执行相应的动作。

LiJavascript的博客 1035

EJB 教程推荐

EJB教程 EJB概述 EJB创建应用 EJB无状态Bean EJB有状态会话Bean EJB持久性 EJB消息驱动Bean EJB注解 EJB回调 EJB定时器服务 EJB依赖注入 EJB拦截器 EJB嵌入对象 EJB Blobs/Clobs EJB事务管理 EJB安全 EJB JNDI绑定 EJB实体关系 EJB访问数据库 EJB查询语言 EJ...

weixin_34186931的博客 63

在实车上进行lio-sam测试

PS:将雷达和imu相对固定后,拆下来,原地晃啊晃,直到xyz进度达到百分百,参考gif。标定完成后,会在result文件夹下生成result.txt。

如果想成为中心,那么就到中心去吧。 997

OpenHarmony + AI:深度解析 Whisper.cpp 智慧语音系统级移植与 NAPI 封装实战

【代码】OpenHarmony + AI:深度解析 Whisper.cpp 智慧语音系统级移植与 NAPI 封装实战。

m0_67505153的博客 188

精通ejb【五】(转载)

转载自:http://www.java-cn.com/technology/technology_detail.jsp?id=785为Beans增加功能 EJB 上下文:通往容器的门户 存在如下信息: 1、关于bean的home对象和EJB对象的信息 2、bean的当前事务信息。 3、 对于客户授权的安全信息。Bean可以通过查询环境决定客户执行操作所需要的安全层次。 4、 bean的环境属性

852

数据结构课程设计C/C++版--美团餐馆预定信息的管理与分析7 8

本关任务:编写一个能查询预定的程序。输入餐馆名称,查询用户账号为当前登录用户且餐馆名称为当前输入餐馆名称的结点信息,并输出其预定时间。本关任务:编写一个能查看预定的程序。创建链队列,从文件order.txt中读取数据,依次进入链队列中。遍历链队列,筛选出用户账号为当前登录用户的结点信息,并依次输出相应的餐馆名称和预定时间。烤肉刘老北京炙子烤肉(四道口店) 11月20日晚餐 0。外婆家(清河华润五彩城店) 12月12日午餐 0。甜鸭梨烤鸭店(农大店) 12月5日晚餐 0。鼎坤朋湘菜馆 12月8日晚餐 0。

m0_62222486的博客 1352

EJB3.0读书笔记 之 EJB组件类型

1 会话Bean 会话Bean对业务流程进行建模,比如:增加记录、访问数据库、访问遗留系统、调用其他EJB组件等。会话Bean实例,比如:查价引擎、工作流引擎、产品分类服务、信用卡发行商引擎和股票交易引擎等。会话Bean分为有状态会话Bean和无状态会话Bean。有状态会话Bean在Bean实例中维护了状态信息,同一Bean实例能够服务同一客户的多个请求。无状态会话Bean不持有客户状态,因此同

青青木屋 1197

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

EJB与CORBA的集成

在本文中,我将说明如何从一个非JAVA语言编写的应用中访问EJB。更加特别地是,我将讨论从一个CORBA的C++客户端访问会话和实体 Bean(它使用同步的IIOP协议进行通信)。我没有提到消息驱动Bean,尽管你可能想从其它语言编写的应用中使用MOM产品来访问它们。 1.   RMI-IIOP 会话Bean和实体Bean使用远程方法调用(RMI)来进行同步通信。J2EE1.3要求JAVA客户端使

chaoyanglee163的专栏 3546

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

j2ee规范——EJB

把编写的软件中那些需要执行制定的任务的类,不放到客户端软件上了,而是给他打成包放到一个服务器上了。EJB 就是将那些"类"放到一个服务器上,用C/S 形式的软件客户端对服务器上的"类"进行调用。

YQAG 1599

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

EJB基础一 无状态会话BEAN使用

EJB基础一 无状态会话BEAN使用 EJB是J2EE的一条标准。以往EJB被人诟病,缺点是复杂,沉重。然后spring崛起了,spring因其轻量级,开发方便而得到了迅速地推广。但是这是过去了,EJB 2.X确实存在这个特点。但新标准的EJB 3.X却在向轻量级转变,而且开发效率可以说完全与spring相当。 要进行EJB开发,必须有EJB容器,tomcat是默认没有实现EJB的。实现了EJ

ilovewqf的博客 1767

EJB系列(三)--有状态会话Bean和无状态会话Bean

EJB的基本分类     EJB分为EnterpriseBean(企业Bean)和Persistence(持久化),持久化Bean指的是Entity Bean(实体Bean,是一个代表存在于数据库中业务对象的复杂业务实体)。企业Bean又包括Session Bean(会话Bean,完成一个清晰的解耦的任务)和Message Driven Bean(MDB,消息驱动Bean,基于JMS,专门用于异

帆布鞋也能走猫步 1378

EJB3.0开发有状态会话bean

 EJB3.0开发有状态的会话bean,步骤与无状态会话bean类似,只需要在无状态会话bean中把@Stateless改成@Statefulejb类代码如下package wang.ejb3.impl;import javax.ejb.EJB;import javax.ejb.Remote;import javax.ejb.Local;import javax.ejb

天空的云 1323
上一篇: J2EE 应用服务器技术
下一篇: IBM WebSphere简介
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值