您的位置:首页 >> 编程开发 >> Java >> JBoss >> 正文
JBoss RSS
 

J2EE - 如何在JBoss中解决自动增长键值问题

http://www.rdxx.com 03年06月19日 12:12 Blog 我要投稿

关键词: 问题 , 解决 , 键值 , JBoss , J2EE , 自动 , JB

 

J2EE 如何在JBoss中解决自动增长键值问题

【前言】

自动增长键值是关系数据库的一个显著功能特征,如MS Sql ServerMySql可以直接将一个字段设置成自动增长(auto-increment)类型,Oracle也提供了类似的sequence number功能。然而在EJB2.0规范之前,CMP部分并没有对自动增长键有相关的说明,这一缺陷一直深受J2EE开发人员的诟病,而应用服务器开发商为此也提出了各自的解决方案,但是在没有上升到规范的高度之前,这些解决方案都是非正式的,也就是说缺乏通用性,如闻名遐尔的Weblogic,在1.0规范的时候也仅仅是对一些主流数据库进行了支持。JBoss3.0版本没有支持auto-increment特征,到3.2版本才正式支持。本篇是介绍在3.0版本下JBoss如何使用AutoNumber这个EJB插件来实现数据库表键值自动增长功能,在文章的后半部分介绍在3.2版本中如何使用“unknown keys”特征来真正实现自动键值增长。后台数据库使用的是MySql4.0.12版本。

 

EJB是一个仍在快速发展的技术,发展就意味着变化,而“快速”同样适用于“变化”二字,尤其在EJBCMP部分,其变化尤为突出。CMPEJB最精华的体现,由于使用了对象的方式来描述数据库,而目前大多数据库仍以关系类型为主,表达与被表达之间存在着不可忽略的差异,因而EJB规范在制定中需要考虑相关因素,不得不做出均衡的取舍。由于前面所提到的发展性,规范的最终成熟也不是一蹴而就,一个规范的推出可能迫于时机因素(技术或者是商业) 而推迟,开发人员在实际开发当中应该能够明确意识到这点,在遇到规范所引发的局限的地方,充分发挥主观能动性,在考虑问题解决问题方面能够突破到一个新境界。

 

JBoss3.0提供的AutoNumber处理方式

JBoss3.0给用户提供了一个AutoNumber插件来“伪”实现CMP的键值自动增长,之所以冠以一个“伪”字,是因为这个功能并不是通过数据库自身的功能来实现,而是利用了一个工厂类型的CMP Entity Bean来为各类实体Bean(对应数据库中的表)生成相应的键值,用户不必考虑如何来维护键值的唯一性和连续性,这一切都由AutoNumber来代理,用户要做的就是在使用这个“插件”之前先部署这个Bean Jar,并弄清楚其调用原理以知悉如何来使用这个CMP Bean

 

在着手部署这个插件之前,先来看一段JBoss源代码文件AutoNumberFactory的代码注释:

/**

  * Gets the next key for the given collection.

  * Note 1: you must deploy EJB AutoNumber

  * Note 2: the keys are persistent in your database, independent of

  * the actual table

  * Note 3: you can only add instances to the collection which have a

  * key generated by this method, otherwise the keys are not guaranteed

  * to be unique

  * Note 4: key values are >= 0

  */

大意如下:该类是为了给一个键集合获取下一个键值,为了使用这个工厂方法,你首先必须部署AutoNumber这个EJB,键集信息被存储在数据库中,与实际表无关,为了确保键值的唯一性,你只能通过这个工厂方法来生成键值,键值的范围是大于或等于0的整数。

 

部署AutoNumber CMP Entity Bean

AutoNumber插件的位置是在%JBOSS_HOME%/server/default/lib/ autonumber-plugin.jar,令人觉得惊奇的是JBoss没有为这个插件如何部署给出例子或者是指导性的说明文件(或者是本人尚未发现)。在研究了一下相关的源代码后,以下是一个部署的实例,以及在数据库中如何创建一个表来对应这个实体Bean

 

首先在MySql中创建一张表,来对应AutoNumber bean。这张表很简单,只包含两个字段列namevaluename列用以存储键值名称,

9 7 3 1 2 3 4 5 6 4 8 :


 
 
标签: 问题 , 解决 , 键值 , JBoss , J2EE , 自动 , JB 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站