EJB开发第一期---EJB开发配置

article/2025/9/30 2:07:55

一、EJB 3.0简介

1.1 什么是EJB

Enterprise JavaBeans是一个用于分布式业务应用的标准服务端组件模型。采用Enterprise JavaBeans架构编写的应用是可伸缩的、事务性的、多用户安全的。采用ejb编写的这些应用,可以部署在任何支持Enterprise JavaBeans规范的服务器平台,如jboss、weblogic等。

EJB实际上是用于编写业务层代码。如果大家对于MVC (model-view-controller)结构的应用有所了解的话,我们知道一个基于MVC结构的应用应包含显示层控制层业务层, 假设我们采用ejb开发基于MVC结构的应用,那么ejb就是用于开发应用的业务层。

1.2 EJB的好处

EJB为我们提供了很多在企业开发中需要使用到的服务,如事务管理/安全/持久化/分布式等,因为这些服务由容器提供,无需我们自行开发,这样大大减少了我们的开发工作量。另外,EJB提供了强制式分层解耦设计方法。

除了EJB,像spring+hibernate同样提供了事务管理/持久化服务,好像没有必要使用ejb。如果你的应用不需要分布式能力确实没有必要使用ejb, 因为spring+hibernate提供了大部分原来只有ejb才有的服务,而且spring提供的有些服务比ejb做的更细致,更周到。那么是不是有了spring,EJB3就没有必要存在了?这种说法是不正确的,因为ejb设计的初衷是用于分布式场合,而spring一开始就没有打算提供分布式功能。所以两者看似有竞争的关系,但实际上两者的偏重点不一样,像ejb比较适合用于大型企业,因为大型企业一般都会存在多个信息系统,而这些信息系统又相互关联。为了避免业务功能重复开发,实现最大程度的重用,有必要把业务层独立出来,让多个信息系统共享一个业务中心,这样应用就需要具备分布式能力。

1.3 EJB3 的分布式特点

非EJB的应用模式和EJB模式的MVC应用,如下图所示。在该模式里面,分成显示层控制层业务层, 三者不能分开。而采用EJB的应用模式的MVC应用,业务层被独立出来。也就是说,显示层和控制层可以部署在一台机器上,业务层部署在另一台机器上。

像ejb比较适合用于大型企业,因为大型企业一般都会存在多个信息系统,而这些信息系统又相互关联。如下图所示,某公司的两个系统:网上商城系统和手机商场系统。若采用EJB模式,两个系统可以共用分离出来的业务层。当公司的业务发生变更时,只需修改分离出来的业务层即可。这样,就避免业务功能重复开发,实现最大程度的重用,实现了多个信息系统共享一个业务中心。

 

1.4 EJB3 的发展前景

很多人都会问到ejb的发展前景,可以告诉大家ejb的发展前景会越来越好。目前在java社区关于ejb讨论的话题并不是很多,而且ejb占领的市场份额也很少,这种情况主要与它的定位有关,至少现在它的定位还是在分布式应用。有组织统计过在100个项目中,需要分布式的应用只占15%,而85%的应用都是不需要分布式的,这个比例就决定了关注ejb的人不会很多,而且ejb所占的市场份额也不会很大。如果ejb要占领大部分市场份额就必须提供像Spring这样的轻量级解决方案。好在ejb专家组已经认识到了这一点,目前正计划在ejb3.1规范中加入轻量级解决方案(ejb3.1可能会分成两个版本,一个仍然定位于分布式应用,另一个定位于轻量级应用)。如果这个计划得以实现的话,恐怕到时ejb3.1将会逐步吞食由Spring占领的市场份额。因为ejb3的开发和spring一样的简单,而且ejb3是javaee5规范里的技术,所以大部分项目经理都愿意选择一种开发简单、又被更多厂商兼容的标准技术。

二、EJB 3.0环境配置

2.1 EJB3的运行环境

EJB3.0应用需要运行在EJB容器里,下面是一些JavaEE应用服务器,JavaEE应用服务器包含Web容器EJB容器

Jboss(4.2.x以上版本)

是一个成熟的开源的准JavaEE应用服务器,在开源JavaEE应用服务器中所占市场份额第一。如果你打算选用开源的JavaEE应用服务器,那么jboss是最值得选择的。

Glassfish

是一个开源JavaEE应用服务器,对JavaEE规范的支持非常好,其运行性能比较高。因为发展时间相对较短,市场占有率比较低。另外,它能否提供稳定的运行性能,还有待时间的考验。但本人对其后期的发展非常看好。绝对跟jboss有的一拼。

Weblogic(10以上版本)

商业市场占有率第一的商业JavaEE应用服务器,它具有出色的稳定性,并提供了人性化的管理界面,还有企业需要使用到的众多功能。但在ejb3.0领域,本人认为它做的比jboss差些,bug比较多。

Sun Application Server(9.0以上版本)

商业JavaEE应用服务器,如果你打算选用商业应用服务器运行ejb3,这个是不错的选择。

Oracle Application Server(10g以上版本)

商业JavaEE应用服务器,如果你的数据库是oracle,要想兼容性更好,这个是不错的选择。

apusic应用服务器

这是国内的商业JavaEE应用服务器,主要在政府中占有一定的市场份额。要批评的是,其向开发人员提供的文档实在太少了。

注意:Tomcat目前只是Web容器,它不能运行EJB应用。

2.2下载安装EJB

进入http://jbossas.jboss.org/downloads,下载页面如下图所示,我们可以看到很多不同的版本:

我选择了比较老的版本4.2.3,点击Download如下图所示有很多类型的jboss如下:

选择jboss4.2.3.GA下载(大小为95MB),如果你安装的jdk是1.5版本,请选择jboss-4.2.3.GA.zip 文件下载。 如果你安装的jdk是1.6版本,请选择jboss-4.2.3.GA-jdk6.zip文件下载。下载后直接解压缩文件即可完成安装,为了避免应用出现莫名的错误,解压缩的路径最好不要带有空格和中文,如"Program Files"。

下载之后解压缩即可,解压缩的目录如下。

进入jboss的bin目录,找到启动脚本run.bat 。双击run.bat即可启动jboss,此时启动的配置项为default。

三、把Jboss集成进Eclispe

步骤一:调出Server视图,Windows→ShowView→other→Server,添加完如下图所示:

步骤二:调出Server视图,Windows→ShowView→other→Server,添加完如下图所示:

步骤三:点击new server wizard,添加一个Jboss Server,选择Jboss版本:

步骤四:点击next,添加一个Jboss Server安装路径:

步骤五:点击next,设置Jboss的配置信息,在此我选择默认配置:

步骤五:点击next,然后点击Finish完成配置,可选择启动Jboss服务器:

console输出信息如下:

如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【Sunddenly】。

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


http://chatgpt.dhexx.cn/article/WELQcRhs.shtml

相关文章

如何开发EJB?

EJB开发分为两部分:开发EJB和使用EJB 本文示例将使用EJB2.0 :1.工作需要;2.EJB3.0相对于2.0变动不大(添加注解,JPA替换实体Bean实现) 开发EJB的流程 以开发stateless SessionBean为栗. 1.编写SessionBean。需要实现SessionBean接…

数据库笔试题及答案

以下为某公司的数据库笔试题及个人整理的答案,小伙伴们有更好的答案欢迎指教! 数据表 Student(S#,Sname) 10000条记录Cource(C#,Cname,T#) 9条记录SC(S#,C#,Score) 89991条记录Teacher(T#,Tname) 3条记录 题目并没有指定表中有多少数据&am…

MySQL数据库期末考试试题及参考答案(09)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、 填空题 MySQL提供的____命令可以将数据库导出成SQL脚本,以实现数据的备份。mysqldump命令备份多个数据库时,数据库名称之间用____隔开。MySQL中…

数据库题库(一)

第一章 绪论(上) (1) (2)只要有大量数据就可以称之为数据库() (3)数据库管理系统DBMS有多种,比如PostgreSQL、Oracle等(√&#xf…

MySQL数据库期末考试试题及参考答案(07)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、 填空题 如果不想提交当前事务,可以使用_____语句回滚事务。每个事务都是完整不可分割的最小单元是事务的_____性。MySQL中,显式开启事务的语句…

数据库面试题(答案)

1、MySQL主键和唯一索引的区别? 1、主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。 2、主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。 3、唯一性索引列允许空值,而主键列不允许为空值…

MySQL数据库期末考试试题及参考答案(06)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、 填空题 普通索引使用KEY或____定义。在MySQL中,DROP VIEW语句用于____。MySQL中常见的索引大致分为普通索引、 ____ 、 ____ 、全文索引、空间索引。只有在…

数据库习题

习题一 数据库系统绪论 一、数据独立性包括数据的 物理独立性 和 逻辑独立性。 二、数据模型的组成三要素是数据结构 、 数据操作、 完整性约束条件。 三、两个实体型之间的联系分为三类,分别是 一对一关系、 一对多关系和 多对多关系 两个以上的实体型之间以及单…

MySQL数据库期末考试试题及参考答案(04)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、填空题 MySQL中提供了____关键字,可以在查询时去除重复的值。使用ORDER BY对查询结果进行排序时,默认是按____排列。SELECT语句中,用…

MySQL数据库题库

一、选择题 第1章 数据库系统概述 1.DBS是( A )的简写。 A.数据库系统 B.数据库管理系统  C.数据库 D.操作系统 2.DBMS是( B )的简写 A.数据库系统 B.数据库管理系统  C.数据库 D.数据 3.DB、DBMS和DBS之间的关系是 (…

MySQL数据库期末考试试题及参考答案(03)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、填空题 插入数据时,如果不指定____,必须为每个字段添加数据。MySQL中使用____语句来更新表中的记录。MySQL提供____语句用于删除表中的数据。在…

【数据库】数据库选择题练习及详解

练习1 1.允许取空值但不允许出现重复值的约束是______ A、NULL B、PRIMARY KEY C、UNIQUE D、FOREIGN KEY 解:NULL指当前值为空,不做其他约束,PRIMARY KEY为码约束,码必须唯一且不能为空,UNIQUE指的是当前值唯一&…

MySQL数据库期末考试试题及参考答案(05)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、填空题 交叉连接查询返回的结果是被连接的两张数据表中所有数据行的____ 。左连接查询的结果包括LEFT JOIN子句中左表的____,以及右表中满足连接条件的记录…

MySQL数据库期末考试试题及参考答案(02)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、 填空题 创建数据库时,语句中添加____可以防止数据库已存在而引发的程序报错。如果使用非图形化工具操作数据表,操作之前应该先使用____命令指定…

MySQL数据库期末考试试题及参考答案(01)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、 填空题 ___在20世纪80年代被美国国家标准学会和国际标准化组织定义为关系型数据库语言的标准。数据模型所描述的内容包括3个部分,分别是数据结构、数据操作…

数据库原理及应用-期末考试试题及答案

单项选择题 DB、DBMS和DBS三者之间的关系是( )。 A.DB包括DBMS和DBS B.DBS包括DB和DBMS C.DBMS包括DB和DBS D.不能相互包括 对数据库物理存储方式的描述称为( ) A.外模式…

数据库试题及答案 两套

数据库原理试题(A卷) 一、 填空题(每空 1 分,共 20 分) 1. 对于一个国家来说,数据库的建设规模、数据库信息量的 _____________ 和 _____________ 已成为这个国家信息化程度的 ________________ 。2. 数据模型通常由:…

经典 SQL 数据库笔试题及答案整理

马上又是金三银四啦,有蛮多小伙伴在跳槽找工作,但对于年限稍短的软件测试工程师,难免会需要进行笔试,而在笔试中,基本都会碰到一道关于数据库的大题,今天这篇文章呢,就收录了下最近学员反馈上来…

AttributeUsage(转载)

System.AttributeUsage声明一个Attribute的使用范围与使用原则。 AllowMultiple 和 Inherited 参数是可选的,所以此代码具有相同的效果: AttributeTarget的值可以参考1。部分可取值如下: 如果 AllowMultiple 参数设置为 true,则返…

[AttributeUsage(AttributeTargets.Class)] 用法例子

首先,创建一个自定义的Attribute,并且事先设定我们的Attribute将施加在class的元素上面以获取一个类代码的检查信息。 using System; using System.Reflection; [AttributeUsage(AttributeTargets.Class)] public class CodeReviewAttribute : System.Attribute //定义一个Co…