原文: 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)有以下文件。
- -//The Apache Software Foundation//DTD Jackrabbit 1.5//EN
- -//The Apache Software Foundation//DTD Jackrabbit 1.4//EN
- -//The Apache Software Foundation//DTD Jackrabbit 1.2//EN
- -//The Apache Software Foundation//DTD Jackrabbit 1.0//EN
所有Jackrabbit 1.x版本都完全向后兼容,因此您可以使用最新的Jackrabbit版本,而无需修改现有的仓库配置。当然,如果要启用Jackrabbit 1.4中引入的数据存储等新功能,则需要进行配置修改。
repository.xml
的文档顶层结构如下所示。声明是可选的,但是如果文件中包含,Jackrabbit 1.5将使用XML验证来确保配置文件格式正确。
从Jackrabbit 1.5开始,
repository.xml
有如下元素:
- FileSystem:内容仓库用于存储已注册的命名空间和节点类型之类的虚拟文件系统。
- Security:身份验证和授权配置。
- Workspaces:配置工作空间的位置和管理方式。
- Workspace:默认工作区配置模板。
- Versioning:配置内容仓库范围的版本存储。
- SearchIndex:配置涵盖存储库范围
/jcr:
系统内容树的搜索索引。 - Cluster:群集配置。
- DataStore:数据存储配置。
有关示例存储库配置文件,请参阅Jackrabbit 1.5默认配置。
将repository.xml文件放在存储库主目录中是个好主意。这可以使您的存储库及其配置很好地包含在单个目录树中。
Bean配置元素
配置文件中的大多数条目都基于以下通用JavaBean配置模式。此类配置指定一个实现类的路径以及实现类需要的属性。
配置变量
Jackrabbit支持${name}
形式的配置变量。这些变量可用于避免在配置文件中对特定选项进行硬编码。所有Jackrabbit版本都提供以下变量:
-
${rep.home}
: 仓库根目录 -
${wsp.name}
:工作空间名称。仅在工作区配置中可用。 -
${wsp.home}
:工作空间根目录。仅在工作区配置中可用。
自从Jackrabbit 1.4(参见JCR-1304)以来,可以使用系统属性或任何特定于应用程序的设置作为配置变量。
安全配置
安全配置用于指定内容仓库的身份验证和授权设置。安全配置的结构是:
默认情况下,Jackrabbit使用Java Authentication and Authorization Service(JAAS)对尝试访问存储库的用户进行身份验证。
一旦用户通过身份验证,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
文件中的工作空间设置为:
maxIdleTime="..."/>
Workspaces
元素中指定了以下全局工作空间配置选项:
-
rootPath
:工作空间的本机文件系统目录。将为每个工作空间自动创建一个子目录,该子目录的路径可以在工作空间配置中用作$ {wsp.path}
变量。 -
defaultWorkspace
:默认工作空间的名称。首次启动存储库时会自动创建此工作空间。 -
configRootPath
:默认情况下,每个工作空间的配置存储在rootPath目录中工作空间目录中的workspace.xml文件中。如果指定了此选项,则工作空间配置文件将存储在虚拟文件系统(请参见上文)中的指定路径中。 -
maxIdleTime
:默认情况下,Jackrabbit仅在关闭整个存储库时释放与打开的工作空间关联的资源。如果指定此选项,则设置在工作空间最大闲置时间。
工作空间配置模板和所有workspace.xml
配置文件具有以下结构:
Workspace
配置元素是:
- FileSystem:虚拟文件系统配置将传递给持久化管理器和搜索索引。
- PersistenceManager:工作空间内容的持久化配置。
- SearchIndex:配置工作空间搜索索引。
- ISMLocking:并发访问的锁定配置。
要修改现有工作空间的配置,需要更改该工作空间的
workspace.xml
文件。更改内容仓库repository.xml
文件中的元素不会影响现有工作空间。
版本控制配置
所有可版本化节点的版本历史记录都存储在repository.xml
配置的Versioning元素中的指定的版本存储配置中。版本控制配置很像工作空间配置,因为它们都被Jackrabbit用于存储内容。版本控制和工作空间配置之间的主要区别在于,没有为版本存储指定搜索索引,因为历史版本查询用的是内容仓库的索引。另一个区别是版本控制配置没有${wsp.name}
或${wsp.path}
变量,而是在配置中显式指定版本存储的本机文件系统路径。
版本控制配置的结构是:
版本控制配置元素是:
- FileSystem:传递给持久性管理器的虚拟文件系统。
- PersistenceManager:版本存储的持久性配置。
- ISMLocking:锁定配置以便并发访问工作区内容。
查询配置
请参阅Jackrabbit wiki上的Search页面。
持久化配置
持久化管理器(Persistence Manager)是配置中最重要的部分之一,负责存储节点和属性。它有各种非常不同的实现,但大多数都使用数据库来存储数据。如果使用数据库PM并且想要连接到外部数据库,则可能还需要设置数据库 。这可能需要Jackrabbit数据库用户拥有允许创建表的访问权限,因为表的名称通常取决于工作区名称(有关更多信息,请参阅各个PM的javadoc)。
对于大型二进制数据,可以选择使用DataStore而不是Persistence Manager。
有关更多详细信息和可用PM的概述,请参阅Jackrabbit wiki上的 PersistenceManagerFAQ页面。
如果使用数据库持久化管理器,则配置的数据库连接不得受外部事务管理器的控制。Jackrabbit在更高级别上实现分布式XA事务支持,并期望完全控制底层数据库连接。
文件系统配置
Jackrabbit的早期版本旨在使用FileSystem接口中定义的虚拟文件系统层来抽象其持久性机制。这种低级方法在实践中效果不佳,因此大多数持久性抽象现在都在更高级别处理。但是Jackrabbit的某些部分仍然使用这种文件系统抽象。
虚拟文件系统在
bean元素中配置。有关可用选项,请参阅主文件系统实现LocalFileSystem,DatabaseFileSystem和MemoryFileSystem。建议的替代方法是使用LocalFileSystem实现,该实现只是将抽象文件系统访问映射到本机文件系统中的指定目录。
集群配置
请参阅Jackrabbit wiki上的Clustering页面。
数据存储配置
请参阅Jackrabbit wiki上的 DataStore页面。
项状态锁定配置
TODO
密码配置
使用数据库支持的持久化管理器或其他组件时,通常需要在Jackrabbit配置中包含数据库密码。如果您不希望在配置文件中以明文形式存储此类密码,则可以在base64中对密码进行编码,并在其前面添加{base64}
。Jackrabbit会在将密码传递给底层数据库之前自动解码。例如,以下两个密码配置参数是等效的(dGVzdA ==
是test
的base64编码):