好文档 - 专业文书写作范文服务资料分享网站

JBoss中文文档

天下 分享 时间: 加入收藏 我要投稿 点赞

专注于Java EE平台、敏捷方法及Open Source技术咨询

Buildfile: jboss-build.xml run-cmp:

[java] P10 Terry Smithson midfielder 100.0 [java] P6 Ian Carlyle goalkeeper 555.0 [java] P7 Rebecca Struthers midfielder 777.0 [java] P8 Anne Anderson forward 65.0 [java] P9 Jan Wesley defender 100.0

[java] T1 Honey Bees Visalia [java] T2 Gophers Manteca [java] T5 Crows Orland

[java] P2 Alice Smith defender 505.0 [java] P22 Janice Walker defender 857.0 [java] P25 Frank Fletcher defender 399.0 [java] P5 Barney Bold defender 100.0 [java] P9 Jan Wesley defender 100.0

[java] L1 Mountain Soccer [java] L2 Valley Basketball

请注意,客户应用没有删除数据。因此如果如果运行客户应用两次以上,应用将抛出异

常,因为实体已经存在。如果再次运行,则需要删除这些数据。其中,最简单的方式(如果使用HSQL)是删除当前工作服务器配置中data/hypersonic目录中的内容(假定,用户没有保存其他重要的数据在这里),然后重启服务器。本书同时也提供了简单的SQL脚本,以复位数据库,即运行db-delete目标。

ant -f jboss-build.xml db-delete

用户也可以直接使用HSQL管理器工具,通过SQL命令删除数据。

7.3 自定义CMP

用户通过jbosscmp-jdbc.xml文件能够进一步自定义CMP引擎的行为。该文件用于基本信息配置,比如数据源名、类型映射(Hypersonic、Oracle等等)、在部署时是否自动创建数据库表、在关闭服务器时是否自动删除数据库表。用户能够自定义EJB映射到的数据库表名和列名,还可以根据自身要求调整CMP引擎装载数据的方式。比如,通过使用read-ahead元素,用户能够通过单个SQL调用读取并缓存多个EJB的数据块,供后续访问使用。用户可以指定eager装载组,即初始时,只装载实体Bean的某些域数据。相反,通过指定lazy装载组,能够实现延时装载。使用类似的机制能够实现EJB间关系的访问。如果用户使用BMP,则不可能有这么灵活,因为每个Bean必须使用单个SQL调用装载。因此,用户需要

www.open-v.com 拓宽视野,奔向成功

Open View, Victory Open

40 专注于Java EE平台、敏捷方法及Open Source技术咨询

开发自身的SQL,并手工实现关系管理。选择CMP,还是BMP,已经很明显了。极少情况

下,用户需要在应用中使用BMP。 当然,调整CMP引擎的详细内容并不是本书的讨论主题。通过阅读docs/dtd/jbosscmp-jdbc_4_0.dtd(提供了详细注释),用户能够较好地了解CMP引擎。在conf目录中还存在标准设置,即standardjbosscmp-jdbc.xml文件,它提供了默认设置,并且提供了常见数据库的类型映射列表。该文件的开头部分如下。

java:/DefaultDS

Hypersonic SQL

true false false

300000 false true false

foreign-key

on-load 1000

*

1000 ...

用户可以看到:standardjbosscmp-jdbc.xml设置了数据源,并将嵌入式Hypersonic数据库作为默认数据库,将table-creation设置为true,将removal设置为false。因此,如果表不存在,CMP引擎会创建它。read-only和read-time-out元素分别指定数据是否只读和数据的有效时间(单位:毫秒)。请注意,大部分元素都能够用于不同粒度,比如每实体Bean级别,或者实体Bean的域级别(详细内容,请参考DTD)。使用了on-load策略的read-ahead元素表明,在访问实体Bean(而不是调用finder方法)时才装载EJB数据。page-size表明,SQL命令一次最多能够装载1000个实体。用户能够在jbosscmp-jdbc.xml文件中覆盖默认设置,或者直接修改standardjbosscmp-jdbc.xml文件。 《The JBoss 4 Application Server Guide》一书给出了CMP引擎及其不同装载策略的详细阐述。 7.3.1 XDoclet

开发和维护部署描述符很费时间,而且容易出错。尤其是对于那些需要完整自定义CMP

www.open-v.com 拓宽视野,奔向成功

Open View, Victory Open

41 专注于Java EE平台、敏捷方法及Open Source技术咨询

引擎行为的应用,即需要维护内容很多的、复杂的文件,则更容易出错。如果用户在使用

CMP(或者,EJB),则学习使用XDoclet代码生成引擎(http://xdoclet.sourceforge.net)很有必要。XDoclet使用JavaDoc风格属性标签,并能够为用户生成部署描述符、EJB接口以及其他产出物。XDoclet对JBossCMP提供了完整支持,并且学习曲线非常平滑,因此本书强烈推荐(事实上,确实如此)将XDoclet用于实际项目。

www.open-v.com 拓宽视野,奔向成功

Open View, Victory Open

42 专注于Java EE平台、敏捷方法及Open Source技术咨询

第8章 使用其他数据库

在以前的章节,本书的应用仅仅使用了JBoss默认数据源。其中,默认数据源由嵌入式

HSQL数据库实例提供,并且绑定到JNDI名,“java:/DefaultDS”。在JBoss中集成数据库对于运行实例带来了很多便利,而且HSQL适合于大部分场合。然而,用户可能需要使用其他数据库,或者替换默认数据源,或者从同一服务器中访问多个数据库。

8.1 配置数据源

JBoss中的数据库连接管理完全由JBoss JCA实现处理。因此,借助于JCA资源适配器能够访问数据库,并且能够处理连接池、安全性和事务。 8.1.1 包裹JDBC的资源适配器

如果没有为数据库提供专有适配器,则用户需要配置使用JBoss提供的、包裹了JDBC的资源适配器(2.2.4节曾给出过讨论)。很明显,用户需要提供JDBC驱动,并提供相应的类(仅仅需要将驱动jar或zip文件拷贝到当前工作的服务器配置中的lib目录)。其中,不同数据源配置的主要区别在于,它们是使用本地,还是XA事务的JDBC适配器。如果某JDBC驱动提供了javax.sql.XADataSource实现,则支持XA事务的数据源可用。有一点请注意,即使XADataSource实现可用,用户还是可以选择使用本地事务(比如,请参考JBoss提供的两份Oracle配置文件)。同时,还存在no-transaction配置,用户应该很少以这种方式使用数据库。

8.1.2 数据源配置文件

数据源配置文件的后缀为-ds.xml,因此JCA部署器能够正确处理它们。其中,目录docs/example/jca包含了用于各种数据库的配置实例,用户最好能够以其中一个为切入点。数据源配置文件格式的完整描述请参考docs/dtd/jboss-ds_1_5.dtd。其他有关该文件和JBoss JCA实现,用户可以参考《The JBoss 4 Application Server Guide》一书。 本地事务数据源可使用local-tx-datasource元素配置、XA事务数据源可使用xa-tx-datasource元素配置。示例文件generic-ds.xml展示了如何同时使用这两种类型,以及其他可用元素(比如,连接池)的配置。对于同时提供了本地和XA配置的数据库实例有Oracle、DB2、Informix。 如果用户查看firebird-ds.xml、facets-ds.xml、sap3-ds.xml实例文件,则将注意到它们的格式完全不同,即根元素为connection-factories,而不是datasources。这些文件是基于通用的JCA配置语法,供配置了相应的JCA资源适配器使用。正如本书于2.2.4节阐述的一样,该语法不是针对数据源配置的,比如用于配置JMS资源适配器的jmx-ds.xml文件。 接下来,本书将给出具体配置的详细步骤。

8.2 将MySQL作为默认数据源

MySQL是世界范围内使用最为流行的开源数据库之一,并且许多大型公司一直都在使

www.open-v.com 拓宽视野,奔向成功

Open View, Victory Open

43 专注于Java EE平台、敏捷方法及Open Source技术咨询

用它,比如Yahoo和NASA。官方提供的JDBC驱动称之为Connector/J。在本实例中,使用

了MySQL 4.1.17和Connector/J 3.0.15。通过http://www.mysql.com能够下载到它们。 8.2.1 创建数据库和用户

本书假定用户已经熟悉MySQL的安装,而且知道如何运行它和其基本知识。通过命令行运行mysql客户应用能够执行一些管理工作。用户应该以具有足够权限的用户连接到MySQL服务器(比如,通过指定-uroot选项,使得以MySQL root用户运行)。 首先,创建数据库jboss,供JBoss使用。

mysql> CREATE DATABASE jboss; Query OK, 1 row affected (0.05 sec)

然后,验证是否成功创建。

mysql> SHOW DATABASES; +----------+ | Database | +----------+ | jboss | | mysql | | test | +----------+

3 rows in set (0.00 sec)

接下来,创建用户名为jboss、密码为password的用户,以访问jboss数据库。

mysql> GRANT ALL PRIVILEGES ON jboss.* TO jboss@localhost IDENTIFIED BY 'password'; Query OK, 0 rows affected (0.06 sec)

最后,再次验证一切是否就绪。

mysql> select User,Host,Password from mysql.User; +-------+-----------+------------------+ | User | Host | Password | +-------+-----------+------------------+ | root | localhost | | | root | % | | | | localhost | | | | % | | | jboss | localhost | 5d2e19393cc5ef67 |

www.open-v.com 拓宽视野,奔向成功

Open View, Victory Open

44

JBoss中文文档

专注于JavaEE平台、敏捷方法及OpenSource技术咨询Buildfile:jboss-build.xmlrun-cmp:[java]P10TerrySmithsonmidfielder100.0[java]P6IanCarlylegoalkeeper555.0[j
推荐度:
点击下载文档文档为doc格式
38ywy891bi6tck19hlml
领取福利

微信扫码领取福利

微信扫码分享