动态网站制作指南 [  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教程 ]的信息

本月文章推荐
.通过E-mail共享Java对象.
.新手入门:写Java程序的三十个基.
.JDK的命令详解(2).
.分析和设计.
.jdbc 连接常见的数据库.
.JAVA反射技术(二).
.实例讲解Apache+tomcat+ssl配置.
.MIDP1.0游戏完整实现-双人扫雷1..
.JDK 1.6不支持AMD 64 bit Java p.
.Servlet基础例程-HelloServlet(N.
.tomcat下中文的彻底解决.
.新手必读 Java中流的概念.
..NET 和智能传输服务API编写自动.
.java中的对象引用问题的再次理解.
.加法赋值运算符 (+=).
.Java对Domino Objects的访问 (1.
.利用 Java 平台的特性建造一个令.
.您的利用Java平台的特性建造一个.
.如何制作动画程序.
.BEA的WorkshopStudio开发者的IDE.

用JDO替代CMP的应用

发表日期:2008-1-5 |



  用JDO替代CMP的应用

在大多数使用EJB的项目中,O/R Mapping一直是Java开发者关注的问题。自从有了CMP(Container Managed Persistence),数据库映射需要做的工作轻松多了。然而,CMP仍然有不完善的地方??针对不同的应用服务器,CMP的映射描述文件不同,这在一定程度上阻碍了EJB的移植;CMP/CMR与数据表的映射关系比较复杂。经笔者测试,使用Castor JDO(Java数据对象)比使用CMP性能有很大的提高,而且能满足大多数应用的需求。

关于Castor JDO

Castor JDO是一个以RDBMS为中心的开放源码项目,虽然它与Sun的JDO有很多相似之处,但没有完全遵循JSR规范。一些主要技术上的差异使它与Sun的JDO规范并不十分相符。每一个持久对象在Castor中都有一个被观察的数据锁,这意味着事物的超时和死锁可以不被视为数据锁定。而Sun的JDO规范却隐藏了锁的细节。

内部的Castor JDO对每个事物活动的持久对象都提供一个数据锁的拷贝(包括缓存)维护。Sun的JDO未明确要求每一个事物的每一个对象用缓存,但它含蓄地要求具有字节码修饰者,而Castor却不需要。

Castor还提供一些Sun的JSR规范中没有提到的其它特性,比如键值生成器(常用于ID自动生成)、长时事务支持和OQL等。

Castor JDO和EJB CMP

JDO和EJB Bean之间的关系很难用谁比谁更好来形容。实体Bean可以治理自身的持久性(EJB规范称为Bean治理的持久性或BMP),也可以依靠EJB容器来治理它(称为容器治理的持久性或CMP)。

对于BMP,实体Bean可以用Castor JDO作为持久性机制,或者使用其它的办法,比如直接使用JDBC作为持久性机制。对于CMP,EJB容器供给商可以在Castor JDO之上实施CMP,这样Castor JDO就被用来作为实体Bean的持久机制。

假如开发者需要EJB的治理生存周期、安全性、“一次开发随意部署”的承诺和分布式商业应用等特性,那么EJB是正确的选择。然而事实上,Castor的简洁、开放性、更多设计上的自由度和与Castor XML整合等特性,让人有充分的理由选择Castor JDO。庆幸的是,我们可结合EJB和Castor JDO的优点来弥补它们各自的短处,这就是本文的目的。

Castor JDO结合SessionBean使用

选择应用服务器

目前只有JBoss有支持Castor JDO的包。Castor会在将来的版中提供对J2EE的支持。笔者使用JBoss-2.4.9作为测试。假如选择Castor JDO完全替代CMP,可以不考虑使用支持最新CMP版本的应用服务器。

选择Castor JDO

为了获得最新版本的支持,可以选择最新的Castor JDO包。笔者测试时使用的版本是0.9.4。

配置JBoss

1.修改conf/default/jboss.jcml文件

<!-增加JDBC驱动-->

<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider">

<attribute name="Drivers">Oracle.jdbc.

driver.OracleDriver,org.hsqldb.jdbcDriver</attribute>

</mbean>

...

<!--配置JDBC数据源-->

<mbean code="org.jboss.jdbc.XADataSourceLoader"

name="DefaultDomain:service=XADataSource,name=NewsDS">

<attribute name="PoolName">NewsDS</attribute>

<attribute name="DataSourceClass">org.jboss.pool.j

dbc.xa.wrapper.XADataSourceImpl</attribute>

<attribute name="Properties"></attribute>

<attribute name="URL">jdbc:oracle:thin:@192.168.1.7:1521:NEWS</attribute>

<attribute name="GCMinIdleTime">1200000</attribute>

<attribute name="JDBCUser">scott</attribute>

<attribute name="MaxSize">10</attribute>

<attribute name="PassWord">tiger</attribute>

...

</mbean>

...

<!-在文件最后配置CastorJDO-->

<mbean code="org.jboss.jdo.castor.CastorJDOImpl"

name="DefaultDomain:service=CastorJDO,name=castortestnews">

<attribute name="Configuration">file:../jdo/conf/database.xml</attribute>

<attribute name="JndiName">jdo/castortestnews</attribute>

<attribute name="LockTimeout">10000</attribute>

<attribute name="LoggingEnabled">true</attribute>

<attribute name="CommonClassPath">false</attribute>

<attribute name="AutoStore">false</attribute>

<!-Castor JDO新版本中提供连接池-->

<attribute name="DatabasePooling">true</attribute>

</mbean>

2.修改conf/default/standardjaws.xml文件

<datasource>java:/NewsDS</datasource>

<type-mapping>Oracle8</type-mapping>

<debug>true</debug>

3.拷贝必要的jar包到lib/ext目录下

这些包包括:Castor JDO包castor-0.9.4.jar、JBoss2.4.x的Castor JDO补丁包castorjdoplugin.jar、JDBC驱动(笔者使用的是Oracle 8.1.7)classes12.zip、XML解析包xerces-J_1.4.0.jar(笔者使用的是Castor推荐的xerces版本)。

配置Castor JDO

增加%JBOSS_HOME%jdoconfdatabase.xml文件,文件代码如下:

<!DOCTYPE databases PUBLIC "-//EXOLAB/Castor JDO Configuration DTD Version 1.0//EN"

"http://castor.exolab.org/jdo-conf.dtd">

<database name="news" engine="oracle">

<!-下面的jndi name与standardjaws.xml中的datasource对应-->

<jndi name="java:/NewsDS" />

<!--路径可以由读者指定,但父目录必须是%JBOSS_HOME%-->

<mapping href="../jdo/conf/mapping.xml" />

</database>

安装Ant

使用Ant编译部署EJB应用,可以下载安装Ant的最新版本(笔者使用的是Ant-1.5.1)。

在SessionBean中封装JDO的方法,可以参考Castor的文档。注重,作为参数传递的JDO Bean,需要实现Java串行化接口。封装JDO的代码如下:

//ejbCreate方法中查询JDO

ctx = new InitialContext();

jdo = (DataObjects) ctx.lookup("java:comp/env/jdo/CastortestnewsJDO");

//创建新对象,增加数据表中的一行

/**每一个查询或更新的方法打开新的db连接,使用后关闭,不关闭的连接会导致TransactionNotInProg

ress异常*/

db = jdo.getDatabase();

auxType.setAuxDesc(auxDesc);

db.create(auxType);

db.close();

在其它应用服务器上使用Castor JDO

针对不同的应用服务器,需要增加一个Castor JDO JNDI绑定的服务,为Castor JDO配置参数。例如,JBoss增加了一个JMX MBean的服务,提供了JBoss 实现Castor JDO MBean绑定服务的源码。
上一篇:学习更多 人气:330
下一篇:一个applet-servlet通讯的例子 人气:588
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-13 爬爬思特新闻管理系统 v2.0 Beta1
2008-10-13 Pligg v9.9.5 Beta
2008-10-13 广优邮件发送系统 v2.1
2008-10-13 缤纷互动视频交友 v3.1 RC
2008-10-13 MyShop网络商城 build 081005
2008-10-13 Chyrp 超轻量级开源博客引擎 v2.
2008-10-13 162100静态(论坛/文章)系统 v2.4
2008-10-13 金博人才招聘求职网黄金版 v4.2
2008-10-13 愚人笔记 v4.0
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成