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

一、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://www.cnblogs.com/sunddenly/p/4330253.html


智能推荐

Exynos 4412 Cortex-A9嵌入式Linux驱动开发学习笔记-第一期

一、Linux 体系结构 如下图所示,Linux 体系结构,从大的方面可以分为用户空间(User Space)和内核空间 (Kernel Space)。 用户空间中包含了 C 库,用户的应用程序。在某些体系结构图中还包含了 shell,当然 shell脚本也是 Linux 体系中不可缺少的一部分。 内核空间包括硬件平台、平台依赖代码、内核、系统调用接口。 另外,用户空间和内核空间是程序执行的两种不...

场效应管放大电路

金属-氧化物-半导体(MOS)场效应管 N沟道增强型MOSFET 栅源加电压,在电场作用下产生沟道。产生沟道的门限开启电压VT。 漏源加电压,产生电压梯度,导致沟道夹断。预夹断的临界条件 输出特性 特性方程 可变电阻区                         &...

【响应式】foundation栅格布局的“尝鲜”与“填坑”

  提到响应式,就不得不提两个响应式框架——bootstrap和foundation。在标题上我已经说明白啦,今天给大家介绍的是foundation框架。 何为“尝鲜”?就是带大伙初步一下foundation的灵活和强大 何为“踩坑”?就是我把我使用的时候踩过的坑给标个记号,这样大伙用的时候就可以“绕道而...

word2vec笔记

word2vec 词向量 one hot Distributed representation CBOW&Skip-Gram CBOW Skip-Gram sigmoid函数 Huffman树 基于Hierarchical Softmax的模型 基于Negative Sampling的模型 本文基于word2vec原理CBOW与Skip-Gram模型基础 CBOW与Skip-Gram的模型...

2021-03-14

官网:https://router.vuejs.org/zh/guide/essentials/navigation.html 一、安装路由 npm install vue-router --save-dev 在src目录下创建router目录 使用 vuecli3创建项目选择路由会自动创建route目录 在main.js引入router 二、配置路由 1、 hash: 使用 URL hash 值...

猜你喜欢

文献阅读-ICRA2020-精确的实时数据驱动的对RAVEN-II手术机器人末端执行器位置估计器

文章序号、所属单元及链接:1646-Surgical Robotics Laparascopy 一作所属单位:University of Washington 读后体会:以我浅薄的学术认知原本认为这篇论文挺牛逼的,实验细节给的很多,关键是结果提升很大。跟老师交流之后才知道这论文只能骗骗外行人,关键的问题是他是空载进行实验的,绳驱动机器人负载和空载的差距很大,还需要考虑绳经过一段时间使用之后动态特性...

RoarCTF 2019Easy Calc表达式注入

[RoarCTF 2019]Easy Calc表达式注入 - 幕布 接着发现了api的接口地点calc.php和get的参数 直接url后面加上calc.php显示了一部分源码 可以发现过滤了很多的东西,并且计算器的页面上是只允许输入数字的,所以可以用带空格的数字绕过(用? num代替?num) scandir("/")扫一下根目录,"/"被waf过滤了,单...

一文弄懂ARQ协议与Nagle算法

本文参考文献: 1、ARQ-维基百科 https://zh.wikipedia.org/wiki/ARQ 2、TCP/IP(三) —— 可靠传输工作原理 http://pmghong.blog.51cto.com/3221425/1242470 3、TCP可靠传输&流量控制&拥塞控制  http://my.oschina.net...

centos6.5 安装rabbitmq

楼主安装在远程centos服务器上: 1.操作环境 centos6.5 2.Erlang下载 RabbitMQ是使用Erlang开发,所以安装RabbitMQ前需要先安装Erlang wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 3.Erlang安装 rpm -ivh epel...

Liunx常用命令

Liunx常用命令 前言 1.目录操作命令 1.1目录切换 cd 1.2目录查看 ls [-al] 1.3目录操作【增,删,改,查】 1.3.1创建目录 mkdir 1.3.2删除目录或文件 rm 1.3.3修改目录 mv和cp 1.重命名目录 2.剪切目录 3.修改目录 1.3.4查找目录 find 2.文件操作命令 2.1文件操作【增,删,改,查】 2.1.1新建文件 touch 2.1.2删...

问答精选

SQL, update command not ending properly

It keeps saying : ORA-00933: SQL command not properly ended Pls help me or give me a link to a solution You can use a correlated subquery instead:...

How can I escape $.each loop with my data?

I'm doing an Json call to retrieve an a list of locations with information details for each location. longitude and latitude are included in this info. I am using Google's distance matrix api to get t...

How to display all the columns (and their type) in all tables of all schemas in a database?

Suppose you have a database which has an 'n' number of schemas with an 'n' number of tables each. Each of these contain an 'n' number of columns. How would I print all this data along with the data ty...

How to set the java.library.path in intelliJ Idea

Could anyone please help how do I solve this error: I am using IDEA IDE as a first time, and have been using Resin_4.0.37 as a server to test my work. As soon as I start my lcoal server in debug mode ...

How to calculate mouse coordinate based on resolution c#

i am trying to develop a remote desktop apps with c#. so i have couple of question regarding mouse coordinate calculation based on picture box suppose i have picture box and i want to capture mouse co...

相关问题

相关文章

热门文章

推荐文章

相关标签

推荐问答