Show Table of Contents
23.9.4. 配置 EJB 2.x 的容器管理持久化
您可以配置 EJB 2.x 的容器管理持久化子系统以指定任何数量的密钥生成器。密钥生成器用于生成唯一的密钥以标识 CMP 服务持久化的每个实体。
您可以定义两种类型的密钥生成器:UUID 和 HiLo 密钥生成器。
- 基于 UUID 的生成器
- 基于 UUID 的生成器可用 UUID 创建密钥。基于 UUID 的生成器只需要具有唯一的名称,它不需要其他配置。基于 UUID 的密钥生成器可以使用下列语法通过 CLI 添加:
/subsystem=cmp/uuid-keygenerator=UNIQUE_NAME:add
例 23.16. 添加 UUID 密钥生成器
要添加名为uuid_identities的基于 UUID 的密钥生成器,请使用这个 CLI 命令:/subsystem=cmp/uuid-keygenerator=uuid_identities:add
这个命令创建的 XML 配置是:<subsystem xmlns="urn:jboss:domain:cmp:1.0"> <key-generators> <uuid name="uuid_identities" /> </key-generators> </subsystem> - HiLo 密钥生成器
- HiLo 密钥生成器使用数据库来创建和存储标识密钥。HiLo 密钥生成器必须具有唯一的名称并配置指定用来存储数据、表名及存储密钥的字段的数据源的属性。HiLo 密钥生成器可以使用下列语法通过 CLI 添加:
/subsystem=cmp/hilo-keygenerator=UNIQUE_NAME/:add(property=value, property=value, ...)
例 23.17. 添加 HiLo 密钥生成器
/subsystem=cmp/hilo-keygenerator=HiLoKeyGeneratorFactory:add(create-table=true,create-table-ddl="create table HILOSEQUENCES (SEQUENCENAME varchar(50) not null, HIGHVALUES integer not null, constraint hilo_pk primary key (SEQUENCENAME))",data-source=java:jboss/datasources/ExampleDS, id-column=HIGHVALUES,sequence-column=SEQUENCENAME,table-name=HILOSEQUENCES,sequence-name=general,block-size=10)
这个命令创建的 XML 配置是:<subsystem xmlns="urn:jboss:domain:cmp:1.1"> <key-generators> <hilo name="HiLoKeyGeneratorFactory"> <block-size>10</block-size> <create-table>true</create-table> <create-table-ddl>create table HILOSEQUENCES (SEQUENCENAME varchar(50) not null, HIGHVALUES integer not null, constraint hilo_pk primary key (SEQUENCENAME))</create-table-ddl> <data-source>java:jboss/datasources/ExampleDS</data-source> <id-column>HIGHVALUES</id-column> <sequence-column>SEQUENCENAME</sequence-column> <sequence-name>general</sequence-name> <table-name>HILOSEQUENCES</table-name> </hilo> </key-generators> </subsystem>注意
block-size 必须设置为 value !=0,否则生成的 PKey 不会递增,因此实体的创建会失败且抛出 DuplicateKeyException。注意
使用群集时 select-hi-ddl 必须设置为 'FOR UPDATE' 以确保一致性。所有的数据库都不支持锁定功能。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.