如何把JavaBean修改为EJB

有时候开发EJB的时候,已经存在JavaBean,需要把JavaBean改造成EJB,下面介绍如何把JavaBean修改为EJB。在修改之前,要清楚JavaBean和EJB有什么区别。本文首先分析了JavaBean与EJB的区别,然后介绍了如何把JavaBean修改为EJB。

1、JavaBean与EJB的区别

1.1 位置

JavaBean属于Web应用的类文件,是Web应用的组成部分;如果是在Application中使用在应该与Application一起使用。
EJB则需要单独创建EJB工程,客户端程序(包括Web应用和application客户端)需要得到EJB的业务接口。

1.2 运行

JavaBean随Web应用一起部署,不需要单独的容器。
采用EJB,需要Web应用和EJB应用同时部署到服务器上。

1.3 文件组成

采用JavaBean,只需要完成功能的JavaBean,例如CartManager,有时候需要辅助类,例如Item(表示购物项),Goods(表示物品)。
如果采用EJB,除了上面的文件之外,还需要接口,接口的作用是声明供客户端访问的方法。另外还需要把原来的JavaBean修改成为EJB的Bean类(使用@Stateless或者@Stateful,实现业务接口)。
注意:在EJB中使用的辅助类,如果需要在业务方法的参数或者返回值中使用,需要串行化(序列化),这样对象才能够在网络上传输。

1.4 访问方式

对于JavaBean,创建对象,然后调用业务方法,例如:
Manager m = new Manager();
初始化,调用业务方法

对于EJB,需要得到EJB对象,可以通过JNDI查找,可以通过注入,下面是查找的方法:
Context ctx=new InitialContext(...);
CartRemote cart =(CartManager)ctx.lookup("JNDI名");
cart.ff//调用业务方法
采用注入方式:@EJB注入


2、如何把JavaBean修改为EJB


第一步:创建EJB工程,然后再创建会话Bean。
第二步:把原来JavaBean中的业务方法复制到EJB的Bean类中
第三步:把原来的辅助类(Item,Goods)复制到当前EJB工程中,并且让他们实现串行化接口(java.io.Serializable);
第四步:在接口中添加方法声明,需要在客户端调用的方法都需要在接口中声明。
第五步:给EJB指定mappedName属性,它会决定EJB的JNDI名字。
第六步:部署EJB工程。


3、如何修改客户端代码(以向购物车添加物品为例)


3.1 原来访问JavaBean的代码(在Servlet中)


// 从界面传递过来的物品编号
String gid=request.getParameter("gid");
// 得到原来的购物车信息
List cart=(List)session.getAttribute("cart");
// 根据物品编号得到物品对象
Goods g = new Goods().findGoodsById(gid);
// 创建购物车管理类
CartManager cartManager = new CartManager();
// 使用原来的购物信息初始化cartManager
cartManager.init(cart);
// 调用业务方法,完成添加
cartManager.addToCart(g);
// 得到修改后的购物信息
cart = cartManager.getCart();
// 重新存到session中
session.setAttribute("cart",cart);
// 响应用户
...


3.2 选择有状态还是无状态


上面的代码显示在多次方法调用之间共享了信息,应该采用有状态会话Bean。
如果想采用无状态会话Bean,调用addToCart的时候,要同时传递cart(原来的信息)和g(新添加物品)。并且更新后的购物车信息应该在当前方法返回。(需要修改原来JavaBean的代码。)


3.3 修改后的代码(采用有状态会话bean)


第一步:得到EJB的业务接口,删除购物车管理类;
第二步:把创建JavaBean实例的代码修改为查找EJB对象的代码。
CartManager cartManager = new cartManager(); //原
CartRemote cartRemote=(..)ctx.lookup("jndi名字");


3.4 采用另外一种实现方式


这种方式把EJB对象保存到session中,在用户的整个访问期间共享EJB对象。
代码修改如下:
CartRemote cartRemote = (CartRemote)session.getAttribute("cartRemote");
if(cartRemote==null){
// 查找EJB对象
...
// 把EJB对象保存到session中
session.setAttribute("cartRemote",cartRemote);
}
// 调用业务方法
cartRemote.addToCart(g);
// 删除原来的部分代码
// List cart=(List)session.getAttribute("cart");
// cartManager.init(cart);
// cart = cartManager.getCart();
// session.setAttribute("cart",cart);

修改界面中显示购物车信息的代码:
原来:<c:forEach items="${cart}" var="item">
现在:<c:forEach items="${cartRemote.cart}" var="item">

李绪成 优快云 Blog: http://blog.youkuaiyun.com/javaeeteacher
如果喜欢我的文章,就加我为好友:http://student.youkuaiyun.com/invite.php?u=124362&c=7be8ba2b6f3b6cc5
Java EJB简单例子.rar Java EJB简单例子,这是HelloWorldBean的Home接口,它是EJB对象的生成库,无状态会话(将在下一个实例中具体讲解)Bean,这个接口是客户端与EJB对象相互作用的中间途径,通过Client触发调用Bean方法:   try {    //取得初始化属性jndiContext,它是连接JNDI树的起始点   InitialContext jndiContext = new InitialContext(properties);    //取得Home对象的引用    Object ref = jndiContext.lookup("HelloWorldHome");    HelloWorldHome home = (HelloWorldHome)   PortableRemoteObject.narrow (ref, HelloWorldHome.class);    //用EJB生成库Home生成EJB对象    HelloWorld hello= home.create();    //调用EJB对象方法printHelloWorld(),EJB对象把调用委派给Bean    System.out.println (hello.printHelloWorld());   } 立即下载

相关推荐

JMS的使用范例,EJB初学者必看

本源代码主要向EJB初学者介绍JMS的使用,如何创建和初始化一个请求Requestor对象、如何初始化请求Requestor对象、如何建立一个会话和发送请求、如何打印出请求的过程信息、如何接受由反馈者replier发回的消息等。

[原创]EJB循序渐进,手把手创建简单的无状态会话BEAN

    大家好,我是bluesky35(蓝天),好久不见了,抽空和大家交流一下EJB的有关问题,听说过或做过JAVA的人一定知道EJB(Enterprise JavaBean)的存在,EJB作为JAVA的一项重要标准,已经被广泛应用,它的状态持久性和出色的WebService表现一度令人拍案叫绝,EJB大致分为三种类型(实体Bean,会话Bean和消息驱动Bean).会话Bean又称为Sessio

bluesky35(蓝天)的专栏 2620

EJB项目例子

EJB的一个简单的例子,会很适合你的需要的!

EJB例子

挺详细的一个例子 转载一下 客户通过由EJB容器提供的远程和本地接口进行通信 访问控制表是用于保证安全其授权能访问特定功能的用户组或个人表。 持久性是指对象状态永久地存储在数据存储器中,诸如数据库。 企业 beans的类型: –实体 (Entity) beans 实体beans支持多个会话和多个客户,可分为: Bean - 管理Bean持久性 Container-...

a542939658的博客 227

一个简单的EJB代码例子

内容索引:Java源码,初学实例,EJB  一个简单的Java EJB例子代码,以经典的HelloWorld程序为例,介绍通过Client触发调用Bean方法、JNDI初始化取得系统属性、连接JNDI树的起始点、用EJB生成库Home生成EJB对象、调用EJB对象方法printHelloWorld(),EJB对象把调用委派给Bean以及介绍HelloWorldBean的Home接口,它是EJB对象的生成库。

模拟鼠标事件的实现思路及代码

模拟鼠标事件,一般可以通过mouse_event()和SendInPut()两种方法。mouse_event()在windows后期版本中逐渐被SendInPut()取代。SendInPut()模拟鼠标移动的事件中,标志位取值不同,输入坐标的意义也不同。简单来说就是,添加MOUSEEVENTF_ABSOLUTE标志位表示鼠标移动是通过绝对坐标定位,此时的坐标要通过转换。光标在屏幕中被分成65535个小块,可以通过如下转换: 代码如下:double fx = x *(65535.0f / fScreenWidth);double fy = y *(65535.0f / fScreenHeigh

Spring工作原理

Spring工作原理 Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。 目的:解决企业应用开发的复杂性 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任...

weixin_41924879的博客 1479

告别手动输入!用Burp插件+ddddocr,5分钟搞定图片验证码自动识别

本文详细介绍了如何利用Burp插件和ddddocr开源库快速构建图片验证码自动识别系统,实现高效、零成本的验证码自动化解决方案。通过环境搭建、性能调优和Burp Suite深度集成,显著提升安全测试效率,特别适用于金融和电商系统的批量测试场景。

weixin_29099217的博客 202

jsp + javaBean + EJB + oracle

1、做一个测试例子 jsp + javaBean + EJB + oracle 。为了显示Document_master_index 中的一行。显示、修改、增加、删除等动作。  注意:本例子是2001年4月开始使用J2EE时做的培训例子,数据库依据的是当时达明的oracle数据库,所以如果讲到用Document_master_index表时候,你可以用任一个表。1、做一个测试例子 jsp + ja

木公子②仁 716

SIwave仿真手册——软件基础(一)

最近在学习SIWAVE,在这里将自己的笔记整理一下,做一个专题。希望对大家有帮助,这个会持续更新的。仅限于软件操作学习,不涉及信号完整性的讨论。

luohuo9844的博客 4万+

用FPGA在HDMI上显示自定义字符:从COE文件到OSD叠加的保姆级教程

本文详细介绍了如何在FPGA上实现HDMI视频流的OSD字符叠加技术,从COE文件生成到动态区域控制的完整流程。通过Verilog代码示例和实战技巧,帮助开发者掌握字符ROM设计、像素坐标追踪和动态混合等核心技术,适用于视频监控、系统状态显示等应用场景。

weixin_28720767的博客 231

wildfly8 mysql_wildfly8+jpa EntityBean 简单入门

1)首先配置wildfly的数据源,我使用的是mysql数据库1.jboss7开始,jboss使用模块化设计所以数据源的配置也是遵循模块化。打开wildfly的安装目录进入modules\system\layers\base\com文件加下,创建mysql\main层级目录创建好目录后在该目录下放入mysql的驱动jar包和一个module.xml文件(文件可从modules\system\lay...

weixin_33288893的博客 226

SWD下载调试接口原理深度剖析

作为ARM嵌入式工程师,下载调试器都应该知道,但你真正了解SWD如何下载调试的么?ARM 芯片通过什么物理接口和什么方式连接完全取决于芯片Debug子系统的架构如何?

zhuwade的博客 1万+

Spring

1. 什么是spring,它能够做什么?    Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。    Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。    然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。    目的:解决企业应用开...

qq_40973475的博客 186

帕德伯恩大学轴承数据集(PU)介绍

PU数据集介绍一、帕德伯恩大学轴承数据集故障类别说明二、关于损伤描述2.1 损伤组合:2.2 重复和多重损伤的安排:2.3 几何尺寸2.4 损伤程度2.5损伤特征数据集损伤类别三、人为损坏轴承3.1 最常用的人为损伤制造方法是:3.2 本数据集使用的人工损坏是由三种不同方法引起的四、通过加速寿命试验产生真正的轴承损坏样本 一、帕德伯恩大学轴承数据集 数据集下载地址 从帕德伯恩大学获得的PU数据集是一个6203轴承数据集,包括人为诱发的和真实的损害。采用压电加速度计采集轴承座的振动信号,采样频率为64 kHz

m0_47180208的博客 3万+

IEC 104电力规约详细解读(一) - 报文结构、报文分类、ASDU

比如,双方可以按频率发送,比如接收8帧I帧回答一帧S帧,也可以要求接收1帧I帧就应答1帧S帧,当然也可以不要求(S帧内容示例参考例1)。所以U帧格式的控制欲第一个字节就只有6种情况,分别是0x83(TESTER确认)、0x43(TESTER命令)、0x23(STOPDT确认)、0x13(STOPDT命令)、0x0B(START确认)、0x07(START命令)ASDU(应用服务数据单元),协议原文格式最好去101协议去看看,会比较详细。遥信、遥测、遥控、遥调、总召、对时等都需要使用I格式传送。

张二狗的博客 1万+

EJB(Enterprise JavaBean)和JavaBean

EJB和JavaBean都是Java编程语言中用于构建应用程序的组件技术,但它们在设计目标、应用场景和实现方式上有着显著的区别。EJB更适合用于构建企业级应用,特别是需要分布式事务处理和远程调用的场景;而JavaBean则更适用于各种Java应用,用于封装业务逻辑和表示层的数据,以及实现组件之间的通信。在实际开发中,开发人员可以根据项目的具体需求和技术栈来选择适合的组件技术。如果需要构建高性能、高可用性和高安全性的企业级应用,并且需要分布式事务处理和远程调用的功能,那么EJB可能是一个不错的选择。

huaqianzkh的专栏 1384

收放卷伺服控制系统详细算法介绍(电子齿轮+张力PID卷绕轴控制功能块)

收放卷控制系统涉及的内容非常多,这里我们介绍全伺服系统利用电子齿轮指令实现主从轴的比例随动速度控制,收放卷控制算法介绍常用链接如下1、收放卷+排线控制收放卷+排线控制系统框图-优快云博客文章浏览阅读24次。1、收放卷前馈量计算FC收放卷前馈量计算FC(CODESYS ST源代码)-优快云博客文章浏览阅读16次。1、收放卷前馈量计算FC(博途PLC):收放卷前馈量计算FC(梯形图+SCL代码)-优快云博客文章浏览阅读534次。2、收放卷前馈量计算FC。

RXXW_Dor的博客 3122

JavaBean和EJB到底是个什么东西?

JavaBean到底是个什么东西? 1.JavaBean与EJB(1)JavaBean与EJB规范在以下方面有共同的目标:通过标准的设计模式推广Java程序代码,提升开发过程和开发工具之间的重复运用性可携性.但是这两种规格的原始问题却是为了解决不同的问题.定义于JavaBean组件模型中的标准规范,被设计来产生可重复运用的组件,而这些组件通常被用于IDE开发工具,而且通常是可视化组件,当然

lannos的专栏 1549

RK3568 Android14 移远GNSS卫星导航模组LC760Z GPS北斗定位模块调试

Rockchip RK3568 作为一款高性能、低功耗的国产SoC,被广泛应用于工业网关、车载中控和智能手持终端等领域。在这些应用场景中,位置服务(Location Service) 往往是不可或缺的功能。本文将详细记录如何集成GPS模组到 RK3568 开发板上,通过 UART(串口)接口集成通用的 GPS 模块(如 移远LC760Z 或 EC20 4G 模块自带的 GPS 功能也差不多),并实现数据的解析与上层应用对接。

qq_33427070的博客 1414

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

javabean 和 EJB的区别

【课前思考】   1. 什么是JavaBean?   2. JavaBean和Java有什么关系?   3. JavaBean会有什么样的用途?   4. 什么是RMI?   5. RMI技术会有什么样的特点?   6. 什么是EJB?   7. EJB和JavaBean又有什么样的关系?9.1 JavaBean的基本概念 9.1.1 JavaBean产生的背景介绍软件组件就是指可

n222nnn222的专栏 1116

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 真的不想监考
下一篇: Java注释(Annotation)
Java_Web_Book
博客等级 码龄18年 8粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值