如何把JavaBean修改为EJB

深入学习JavaBean的示例与应用 JavaBean 是一种特殊的Java类,遵循特定的编程规范,便于在多种环境下的重用。JavaBean 的核心特点在于其可序列化、拥有无参构造器以及属性的 getter 和 setter 方法。// 属性定义// 无参构造器// getter 和 setter 方法return age;在上文示例中,UserBean类展示了如何定义一个简单的JavaBean。其属性包括私有成员变量、对应的 getter 和 setter 方法以及一个无参构造器。 阅读详情

有时候开发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());   } 立即下载

相关推荐

EJB实例工程代码

快速掌握EJB的工程结构与调用原理,直接下载导入工程即用。

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

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

bluesky35(蓝天)的专栏 2619

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

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

EJB例子

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

a542939658的博客 225

EJB项目例子

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

一个简单的EJB代码例子

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

Spring工作原理

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

weixin_41924879的博客 1479

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

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

jsp + javaBean + EJB + oracle

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

木公子②仁 716

别再只会按按钮了!用NanoStat开源项目学ESP32硬件设计:BOOT与自动下载电路的避坑指南

本文通过NanoStat开源项目深入解析ESP32硬件设计中BOOT与自动下载电路的关键技术。从启动机制、电路设计陷阱到三极管选型,提供了一套完整的避坑指南和优化方案,帮助开发者提升设计可靠性和烧录效率。特别适合中级开发者学习ESP32硬件设计的精髓。

weixin_30296405的博客 439

离线环境下 Ubuntu 22.04 制作自定义apt源 安装 Docker环境 的部署方案

本文介绍了一种在无外网环境下部署服务器项目的离线方案。通过在外网环境中制作包含APT软件包和Docker镜像的离线资源包,实现在内网环境中的完整部署。方案详细说明了离线APT源的制作方法、Docker镜像的导出/导入流程,以及内网服务器的软件安装和网络配置步骤。特别强调了版本一致性、目录结构规范和网络适配等注意事项,适用于需要严格隔离网络的生产环境部署。该方案具有可扩展性,可根据实际需求调整软件包和镜像列表。

mmx_2022的博客 654

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

从“看不懂Sansen”到亲手搭建:一个Class AB输出级+浮动电压源的保姆级设计复盘

本文详细记录了从理论困惑到实践突破的Class AB输出级与浮动电压源设计全过程。通过电流镜调试、恒定跨导优化及版图匹配等关键步骤,作者实现了高性能运放设计,并分享了从仿真到实测的宝贵经验,为模拟电路初学者提供实用指导。

weixin_33737774的博客 868

Spring

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

qq_40973475的博客 186

华为防火墙USG6000V---内网访问外网---外网访问内网服务器(NAT服务器)示例配置

华为防火墙USG6000V示例配置,展示了访问防火墙、内网服务器、外网和外网访问内网服务器(NAT服务器)的配置。

lehe99的专栏 2万+

ARM功耗管理软件之DVFS&AVS

思考:功耗管理软件栈及示例?WFI&WFE?时钟&电源树?DVFS&AVS?

AI-安全-功耗 1231

EJB(Enterprise JavaBean)和JavaBean

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

huaqianzkh的专栏 1384

SmartFusion从FPGA到ARM(一)——MSS_GPIO点灯

文章目录前言GPIO点灯 前言 GPIO点灯

whik1194的博客 5270

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

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

lannos的专栏 1549

搞定ESD(二):ESD干扰机理分析

大家好,我是记得诚。上文介绍了ESD的基本知识,对ESD的测试标准进行了解析,包括静电发生器的介绍,实验布置要求,静电放电实验的实施及判定等内容。本文主要介绍ESD的干扰机理。

记得诚 4300

【C#学习记录】如何让界面控件实现自适应布局(Winform)

小伙伴们大家好,我是雷工!在软件界面设计中,客户常常要求设计的界面可以随意缩放,缩放过程中,界面中的按钮等控件也会随着窗体变大缩小自动调整显示位置和尺寸大小。在C#的Winform窗体中如何实现这个效果,下面我们一起学习下。

做有价值的事,积累有价值的笔记! 1万+
上一篇: 评《设计模式之禅》一书
下一篇: 如何把JavaBean修改为EJB
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值