jackrabbit食用指南:Jackrabbit Configuration(jackrabbit配置)

原文: https://jackrabbit.apache.org/jcr/jackrabbit-configuration.html
翻译 by:cleanup123
jackrabbit官网许多链接已失效,cleanup123帮大家重新定位到了新的链接上,请放心食用。如果大家发现错误的地方请在评论区指正,我会及时更改。
仅供学习,未经允许严禁转载。
我已加入“维权骑士”(rightknights.com)的版权保护计划

jackrabbit 配置

Apache Jackrabbit 需要两条信息来建立一个运行的内容仓库实例。

  • 仓库根目录
    仓库根目录中包含有内容仓库jackrabbit的运行实例,其中包含所有仓库的内容,查询的索引,内容配置和其他被内容仓库管理的持久化信息。注意,上面提到的这些并不是一定要在仓库根目录下,持久化管理器和其他的jackrabbit组件可以配置在仓库根目录之外的文件中或者其他资源中(比如远程数据库)。即使有些组件我们并不需要用到,仓库根目录也必须要指定。首次创建内容仓库实例时,jackrabbit将自动在根目录下生成所有必需的文件和目录。
  • 仓库配置文件
    仓库配置文件是仓库根目录下的一个XML文件。这个文件中指定了各个管理组件、访问内容仓库的组件需要的class名字和属性。jackrabbit解析这个配置文件,并在创建内容仓库实例时初始化指定的组件。

这两个配置参数在创建内容仓库实例时直接传给jackrabbit,也可以通过JNDI对象工厂、其他组件管理系统的设置间接传递。

在创建每个工作空间时,将会在仓库根目录下创建一个workspace.xml文件用来配置工作空间,因为这个文件是新建工作空间时按照模板生成的,所以在使用时要对其中的参数做修改。如果你使用了jackrabbit的createWorkspace()来创建的工作空间,那么workspace.xml中的内容仅仅只是repository.xml文件中Workspace元素的拷贝。您可以通过workspace.xml文件手动创建workspace文件夹来创建一个自定义的工作空间(请注意,您必须对持久化管理器设置数据库以及访问权限)。

Repository 配置(仓库配置)

仓库配置文件一般是repository.xml,其中配置了安全管理、版本控制、集群等全局属性。默认的工作空间配置模板也包含在仓库配置文件中。repository.xml的文档类型定义(DTD)有以下文件。

所有Jackrabbit 1.x版本都完全向后兼容,因此您可以使用最新的Jackrabbit版本,而无需修改现有的仓库配置。当然,如果要启用Jackrabbit 1.4中引入的数据存储等新功能,则需要进行配置修改。

repository.xml的文档顶层结构如下所示。<!DOCTYPE>声明是可选的,但是如果文件中包含,Jackrabbit 1.5将使用XML验证来确保配置文件格式正确。

<!DOCTYPE Repository
      PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.5//EN"
      "http://jackrabbit.apache.org/dtd/repository-1.5.dtd">
<Repository>
  <FileSystem .../>
  <Security .../>
  <Workspaces .../>
  <Workspace .../>
  <Versioning .../>
  <SearchIndex .../>  <!-- optional -->
  <Cluster .../>      <!-- optional, available since 1.2 -->
  <DataStore .../>    <!-- optional, available since 1.4 -->
</Repository>

从Jackrabbit 1.5开始,<Repository />下面的配置元素的顺序现在已修复。
repository.xml 有如下元素:

  • FileSystem:内容仓库用于存储已注册的命名空间和节点类型之类的虚拟文件系统。
  • Security:身份验证和授权配置。
  • Workspaces:配置工作空间的位置和管理方式。
  • Workspace:默认工作区配置模板。
  • Versioning:配置内容仓库范围的版本存储。
  • SearchIndex:配置涵盖存储库范围/jcr:系统内容树的搜索索引。
  • Cluster:群集配置。
  • DataStore:数据存储配置。

有关示例存储库配置文件,请参阅Jackrabbit 1.5默认配置

将repository.xml文件放在存储库主目录中是个好主意。这可以使您的存储库及其配置很好地包含在单个目录树中。

Bean配置元素

配置文件中的大多数条目都基于以下通用JavaBean配置模式。此类配置指定一个实现类的路径以及实现类需要的属性。

<ConfigurationElement class="fully.qualified.ClassName">
  <param name="property1" value="...">
  <param name="property2" value="...">
<ConfigurationElement>

配置变量

Jackrabbit支持${name}形式的配置变量。这些变量可用于避免在配置文件中对特定选项进行硬编码。所有Jackrabbit版本都提供以下变量:

  • ${rep.home}: 仓库根目录
  • ${wsp.name}:工作空间名称。仅在工作区配置中可用。
  • ${wsp.home}:工作空间根目录。仅在工作区配置中可用。

自从Jackrabbit 1.4(参见JCR-1304)以来,可以使用系统属性或任何特定于应用程序的设置作为配置变量。

安全配置

安全配置用于指定内容仓库的身份验证和授权设置。安全配置的结构是:

<Security appName="Jackrabbit">
  <SecurityManager .../>     <!-- optional, available since 1.5 -->
  <AccessManager .../>   <!-- mandatory until 1.4, optional since 1.5 -->
  <LoginModule .../>     <!-- optional -->
</Security>

默认情况下,Jackrabbit使用Java Authentication and Authorization Service(JAAS)对尝试访问存储库的用户进行身份验证。<Security />元素中的appName参数用作存储库的JAAS应用程序名称。如果JAAS身份验证不可用或(通常情况下)设置过于复杂,Jackrabbit允许您指定特定于存储库的JAAS LoginModule,然后用于对内容仓库用户进行身份验证。Jackrabbit中包含的默认SimpleLoginModule类实现了一种简单身份验证机制,可以接受任何用户名和任何密码作为有效的身份验证凭据。

一旦用户通过身份验证,Jackrabbit将使用配置的AccessManager来控制允许用户访问和修改的存储库内容的哪些部分。SimpleAccessManager类是Jackrabbit实现的一个简单授权机制,它会给除了匿名用户外的所有用户授予读写权限。

在Jackrabbit 1.3中添加了稍高级的SimpleJBossAccessManager类(参见 JCR-650)。此类设计用于JBoss Application Server,它将JBoss角色映射到Jackrabbit权限。

工作空间配置

Jackrabbit存储库包含一个或多个工作空间,每个工作空间都在单独的workspace.xml配置文件中配置。repository.xml配置的Workspaces元素指定工作空间的位置和管理方式。repository.xml配置还包含默认工作空间配置模板,除非在创建工作空间时给出更具体的配置,否则该模板将用于创建新工作空间的workspace.xml文件。有关工作空间创建工作空间的更多详细信息,请参阅 JackrabbitWorkspace界面中的createWorkspace方法。

repository.xml文件中的工作空间设置为:

<Workspaces rootPath="${rep.home}/workspaces"
    defaultWorkspace="default"
    configRootPath="..."  <!-- optional -->
    maxIdleTime="..."/>   <!-- optional -->
<Workspace .../>   <!-- default workspace configuration template -->

Workspaces元素中指定了以下全局工作空间配置选项:

  • rootPath:工作空间的本机文件系统目录。将为每个工作空间自动创建一个子目录,该子目录的路径可以在工作空间配置中用作$ {wsp.path}变量。
  • defaultWorkspace:默认工作空间的名称。首次启动存储库时会自动创建此工作空间。
  • configRootPath:默认情况下,每个工作空间的配置存储在rootPath目录中工作空间目录中的workspace.xml文件中。如果指定了此选项,则工作空间配置文件将存储在虚拟文件系统(请参见上文)中的指定路径中。
  • maxIdleTime:默认情况下,Jackrabbit仅在关闭整个存储库时释放与打开的工作空间关联的资源。如果指定此选项,则设置在工作空间最大闲置时间。

工作空间配置模板和所有workspace.xml配置文件具有以下结构:

<Workspace name="${wsp.name}">
    <FileSystem .../>
    <PersistenceManager .../>
    <SearchIndex .../>        <!-- optional -->
    <ISMLocking .../>         <!-- optional, available since 1.4 -->
</Workspace>

Workspace配置元素是:

要修改现有工作空间的配置,需要更改该工作空间的workspace.xml文件。更改内容仓库repository.xml文件中的<Workspace />元素不会影响现有工作空间。

版本控制配置

所有可版本化节点的版本历史记录都存储在repository.xml配置的Versioning元素中的指定的版本存储配置中。版本控制配置很像工作空间配置,因为它们都被Jackrabbit用于存储内容。版本控制和工作空间配置之间的主要区别在于,没有为版本存储指定搜索索引,因为历史版本查询用的是内容仓库的索引。另一个区别是版本控制配置没有${wsp.name}${wsp.path}变量,而是在配置中显式指定版本存储的本机文件系统路径。

版本控制配置的结构是:

<Versioning rootPath="${rep.home}/version">
  <FileSystem .../>
  <PersistenceManager .../>
  <ISMLocking .../>       <!-- optional, available since 1.4 -->
</Versioning>

版本控制配置元素是:

查询配置

请参阅Jackrabbit wiki上的Search页面。

持久化配置

持久化管理器(Persistence Manager)是配置中最重要的部分之一,负责存储节点和属性。它有各种非常不同的实现,但大多数都使用数据库来存储数据。如果使用数据库PM并且想要连接到外部数据库,则可能还需要设置数据库 。这可能需要Jackrabbit数据库用户拥有允许创建表的访问权限,因为表的名称通常取决于工作区名称(有关更多信息,请参阅各个PM的javadoc)。

对于大型二进制数据,可以选择使用DataStore而不是Persistence Manager。

有关更多详细信息和可用PM的概述,请参阅Jackrabbit wiki上的 PersistenceManagerFAQ页面。

如果使用数据库持久化管理器,则配置的数据库连接不得受外部事务管理器的控制。Jackrabbit在更高级别上实现分布式XA事务支持,并期望完全控制底层数据库连接。

文件系统配置

Jackrabbit的早期版本旨在使用FileSystem接口中定义的虚拟文件系统层来抽象其持久性机制。这种低级方法在实践中效果不佳,因此大多数持久性抽象现在都在更高级别处理。但是Jackrabbit的某些部分仍然使用这种文件系统抽象。
虚拟文件系统在<FileSystem /> bean元素中配置。有关可用选项,请参阅主文件系统实现LocalFileSystemDatabaseFileSystemMemoryFileSystem。建议的替代方法是使用LocalFileSystem实现,该实现只是将抽象文件系统访问映射到本机文件系统中的指定目录。

集群配置

请参阅Jackrabbit wiki上的Clustering页面。

数据存储配置

请参阅Jackrabbit wiki上的 DataStore页面。

项状态锁定配置

TODO

密码配置

使用数据库支持的持久化管理器或其他组件时,通常需要在Jackrabbit配置中包含数据库密码。如果您不希望在配置文件中以明文形式存储此类密码,则可以在base64中对密码进行编码,并在其前面添加{base64}。Jackrabbit会在将密码传递给底层数据库之前自动解码。例如,以下两个密码配置参数是等效的(dGVzdA ==test的base64编码):

<param name="password" value="test"/>
<param name="password" value="{base64}dGVzdA=="/>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,849评论 0 5
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,317评论 0 9
  • 简介 Bazel是一个类似于Make,Maven和Gradle的开源构建和测试工具。Bazel支持多种语言混编的项...
    小村医阅读 34,846评论 0 10
  • title: 【翻译】SpringData官方文档第四章date: 2016-11-27tags: 翻译categ...
    zhanghTK阅读 1,307评论 0 1
  • 练习科三上路,自我感觉还可以,一号线熟悉了,明天可以练2号线了。人家都说科三就是要求胆大心细,16个项目都要用心,...
    二十一行阅读 124评论 0 0