动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.Java数据对象(JDO)快速入门.
.J2me技术——跟我学制作Pak文件.
.用Applet写的菜单程序 machine.
.使用emacs-jde进行Java开发.
.让Java说话-用Java实现语音引擎.
.Thinking in Java第三版读书笔记.
.MyEclipse 4.1 正式发布.
.类注释文档编写方法.
.Microsoft JScript 特性 - ECMA.
.Java伴侣.
.为什么Java中继承是有害的二.
.Java 理论与实践: 关于.
.J2EE编程起步(1).
.用Java访问SQL Server 2000数据库.
.关于java中的对象序列化.
.老话题,JavaBean实现多文件上传.
.JCA: Java步入应用集成时代.
.灵活使用EJB的本地和远程接口(三).
.JAVA实现支持视频点播WEB服务器.
.hashTable和hashMap的不同.

开发实体EJB 增强的性能和开发

发表日期:2008-1-5 |



  Enterprise JavaBean (EJB) 是一些应用程序组件,它们实现了 EJB 体系结构规范,并且是 Java 2 Enterprise Edition (J2EE) 平台的一部分。EJB 是开发和部署分布式的、可伸缩的、事务型的、安全的、可移植的、基于组件的商业应用的理想选择。
  
  Enterprise JavaBean (EJB)是一些应用程序组件,它们实现了EJB体系结构规范,并且是Java 2 Enterprise Edition (J2EE) 平台的一部分。EJB是开发和部署分布式的、可伸缩的、事务型的、安全的、可移植的、基于组件的商业应用的理想选择。
  
  基于EJB的商业应用需要一个EJB容器,用于运行时的执行。所有遵从J2EE规范的应用服务器,包括WebLogic 8.1在内,都提供了EJB容器。
  
  EJB体系结构背后的主要动机是关系的分离:它将与应用程序基础设施相关的部分(例如事务处理和安全性)与核心应用程序部分(例如业务逻辑)分离开来。简言之,EJB体系结构通过指定EJB容器与EJB开发者之间职责的区别,从而达到这种关系上的分离。例如,透明地实现事务处理是EJB容器的职责,而实现业务逻辑则应由EJB开发者负责。虽然EJB容器执行任务时可能需要某些线索(hint),但是,比起实际地实现这些与基础设施相关的活动来,提供这类线索(通过基于XML的部署描述符)的代价是非常少的。总之,这种关系分离的策略使得商业应用的开发比其他方式要高效得多。
  
  EJB体系结构规范有4种版本:1.0、1.1、2.0和2.1。事实上,EJB version 1.0已经过时了,而最新版本,即2.1,由于刚刚才出现,所以还没有广泛提供。BEA WebLogic Server 8.1同时支持1.1和2.0这两种版本。我们强烈建议在WebLogic Server 8.1中进行开发时使用EJB version 2.0。
  
  实体bean是一种EJB。除了EJB背后的一般动机外,使用实体bean的特定动机是为持久存储中的业务域(business-domain)实体提供一种驻留在内存中的、可共享的、面向对象的视图。通常,业务域对象就是关系数据库中一个表里面的一行。在本文中,我们讨论了关于在WebLogic Server 8.1环境下Entity EJB的设计、开发和部署的特定问题。至于关于EJB技术的综合教程,我们推荐http://java.sun.com/j2ee上的J2EE教程。
  
  概述
  实体bean是设计用来治理关系数据库中的数据的。在BEA WebLogic Server 8.1环境下,Entity EJB的开发包括EJB的设计、生成、打包和部署。
  
  从设计的角度来看,实体bean可以由两条正交轴线来分类:持久性和访问。顺着持久性这条轴线,有两种类型的实体bean:Bean治理的持久性(Bean-managed persistence,BMP)和容器治理的持久性(Container-managed persistence,CMP)。假如是CMP,则EJB容器将治理实体bean的持久性。而对于BMP,则由实体bean的开发者通过指定的Java代码来治理实体bean的持久性。CMP和BMP之间的选择是互斥的。顺着访问这条轴线,又有两种类型的bean:远程的和本地的。远程实体bean提供了定位的透明性,并且可以从不同的Java虚拟机上访问。相反,本地实体bean只能在同一应用服务器内访问。本地和远程之间的选择不是互斥的,因此可以设计具有双重接口的bean。
  
  在EJB体系结构规范中,每个实体EJB组件都是由一组指定的Java类和一组指定的XML部署描述符组成。EJB的打包过程包括将所有指定的EJB Java类文件和XML部署描述符文件打包到一个Java Archive (JAR)文件中。假如实体EJB还要依靠于一些Java助手类文件,那么也可以将这样的类文件包括到EJB JAR文件中,或者将它们单独打包到一个不同的JAR文件中。
  
  EJB的部署可分为两种方式,要么是在BEA WebLogic Server 8.1内直接部署EJB JAR文件以及所依靠的任何JAR文件,要么是首先将EJB jar文件和所有依靠的JAR文件打包到一个企业应用归档(enterprise application archive,EAR)文件内,然后再在WebLogic Server 8.1内部署这个EAR文件。
  
  设计EJB
  在设计一个实体时,需要考虑的几个重要选择是:
  
  是设计一个CMP实体bean还是一个BMP实体bean。
  是设计一个本地实体bean,还是设计一个远程实体bean,抑或是设计一个双重接口的实体bean。
  是设计一个粗粒度(coarse-grained)的实体bean,还是一个细粒度(fine-grained)的实体bean。
  是使用数据传输对象,还是使用get和set方法来访问实体EJB中的数据。
  下面将讨论在开发实体EJB时要面临的这些设计选择。
  
  CMP与BMP
  记住,虽然可能存在一些很合理的例外,但是一般情况下我们强烈推荐使用CMP这种设计。至于为什么要选择CMP,而不是BMP,这里有三大主要原因。
  
  与BMP相比,CMP提供了跨多种不同数据库的可移植性,因为CMP实体bean不包含任何特定于数据库的持久性代码。CMP易于设计、实现和维护。
  通常,CMP拥有好于BMP的性能,因为EJB容器将自动生成特定于数据库的代码,并且这些代码将为目标数据库而优化。
  CMP通过使用本地接口,使得在相关EJB的网络中程序性地(programmatically)进行导航变得非常轻易。
  本地接口、远程接口和双重接口
  因为CMP通过本地接口治理着实体EJB之间的关系,所以我们强烈建议总是提供一个本地接口。我们认为远程接口需要的时候很少,但是假如仔细评估一下就会证实远程接口也是需要的。所以,我们还是设计一个双重接口吧。
  
  本地接口通过本地客户机提供了对EJB的优化的访问;远程方法调用(remote method invocation,RMI)的语义不要求通过本地客户机、使用本地接口来访问EJB。
  
  远程客户机与EJB容器位于不同的虚拟机上,它需要RMI和远程接口来访问EJB。从理论上讲,单单设计一个本地实体存在着一个明显的缺点,那就是只有在相同应用服务器内的客户机才能访问该实体bean。然而,这只是一个理论上的缺点,因为实际上很少需要从应用服务器之外访问实体EJB。
  
  粗粒度与细粒度
  这是一个非常有争议的专题,所以还应根据您个人的经验小心地评价关于此专题的一些不同观点。我们的选择是,实体EJB最常用于表示应用程序业务域中各个实体,所以应该让实体EJB尽量地细粒度,不过也应将设计限定为仅提供一个本地接口。关于这个问题的争论始于EJB体系结构规范1.x版本,当时只能通过一个远程接口来访问实体EJB。建立在EJB 1.x版本基础上的任何反对使用细粒度实体EJB的观点,虽然当时也有合理之处,但是在EJB体系结构规范2.0 中却已不合时宜了,并且最终遭到反对。请谨记:有些专家可能不同意我们的观点,所以我们鼓励您通过实验进行考证,并在此专题上形成自己的观点。
  
  数据传输对象与Get和Set方法
  这又是一个有争议的专题。我们的观点如下所述:
  
  在实体EJB的本地接口中暴露CMP持久字段的所有get访问器(Accessor)方法。
  为不属于实体EJB主键的一部分的每个CMP持久字段创建包装器(wrapper)set方法,并且在实体EJB的本地接口中暴露这些包装器方法。使用这些包装器方法背后的动机是,CMP要求所有持久字段都具有抽象方法setXXX,假如需要在这些setXXX方法内进行任何验证,那么就可以先在包装器方法内完成验证,然后再调用相应的setXXX方法。假如不需要这样的验证,那么省掉包装器方法而直接包括setXXX方法也无不可。
  在某些少见的环境下,可能要求实体EJB有一个远程接口,这时可以为每个实体EJB定义一个数据传输对象,将该数据传输对象作为实体EJB的远程接口中的一个参数,暴露其get和set方法。
  生成和打包EJB
  在EJB体系结构规范中,每个实体EJB组件都由一组指定的Java类和一组指定的XML部署描述符组成:
  
  一个必需的实现实体bean核心功能的bean类。
  一个远程接口、本地接口或双重接口,该接口为实体bean提供了适当的客户机视图。
  一个远程主接口(home interface)、本地主接口或者双重主接口,该接口为实体bean的生命周期治理提供了适当的接口。
  假如是具有组合主键的实体bean,那么还有一个必需的主键类。
  一个ejb-jar XML部署描述符文件,EJB体系结构规范version 2.0对此作了规定。
  一个特定于供给商的 weblogic-ejb-jar XML部署描述符文件,BEA WebLogic Server 8.1 对此有规定。
  假如是CMP实体bean,那么还应有一个特定于供给商的weblogic-cmp-rdbms-jar XML 部署描述符文件,BEA WebLogic Server 8.1对此有规定。
  这里使用的例子实体EJB是一个CMP实体EJB,它有一个远程接口,它的名称是AccountEJB。在随WebLogic Server 8.1一起安装的示例文件中,即 /weblogic81/samples/server/examples/src/examples/ejb20/basic/containerManaged目录下,可以找到这个实体EJB。
  
  实体bean EJB类和接口可以用EJBGen工具来生成。
  
  EJBGen
  EJBGen是一种EJB 2.0代码生成器,它能够从一个EJB bean类生成本地接口/远程接口、本地主接口/远程主接口、主键类和部署描述符。在EJB bean类中使用EJBGen标记来指定不同的EJB设计配置(例如,本地/远程和CMP/BMP)。在WebLogic Server 8.1 SP01 中,EJBGen 类被包括在/weblogic81/server/lib/weblogic.jar中。在WebLogic Server 8.1 SP02 & SP03中,EJBGen类被包括在/weblogic81/server/lib/ejbgen.jar文件中。将ejbgen.jar添加到Classpath中,以便使用EJBGen工具。
  
  EJBGen通过以下命令来调用:
  
  javadoc -docletpath ejbgen.jar -doclet weblogic.tools.ejbgen.EJBGen
  <EjbBeanClass>.java
  
  该命令有一些选项:
  
  -d [Directory]: 创建EJB类/接口和部署描述符时所在的目录。
  -descriptorDir [directory]: 创建部署描述符时所在的目录。
上一篇:超越梦想 EJB 3.0 规范全新体验 人气:381
下一篇:EJB3.0概览以及新版本的诸多进步 人气:360
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-8-29 oblog v4.6 build 20080827
2008-8-29 ASBLOG v2.5 bulid 080828
2008-8-29 时尚DJ舞曲小偷 v3.1
2008-8-29 仿代码信息分类系统 v1.0 Beta3
2008-8-29 浮梦呓语-个人网站 完整版
2008-8-29 多用户QQ空间Flash播放器
2008-8-29 美思卡企业网站管理系统高级版
2008-8-28 LDV个人相册系统 v1.6.1
2008-8-28 讯时网站管理系统CMS v3.5
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号