原文: https://jackrabbit.apache.org/jcr/jackrabbit-configuration.html
翻译 by:cleanup123
jackrabbit官网许多链接已失效,cleanup123帮大家重新定位到了新的链接上,请放心食用。如果大家发现错误的地方请在评论区指正,我会及时更改。
仅供学习,未经允许严禁转载。
我已加入“维权骑士”(rightknights.com)的版权保护计划
Apache Jackrabbit 需要两条信息来建立一个运行的内容仓库实例。
这两个配置参数在创建内容仓库实例时直接传给jackrabbit,也可以通过JNDI对象工厂、其他组件管理系统的设置间接传递。
在创建每个工作空间时,将会在仓库根目录下创建一个workspace.xml
文件用来配置工作空间,因为这个文件是新建工作空间时按照模板生成的,所以在使用时要对其中的参数做修改。如果你使用了jackrabbit的createWorkspace()
来创建的工作空间,那么workspace.xml
中的内容仅仅只是repository.xml文件中Workspace元素的拷贝。您可以通过workspace.xml
文件手动创建workspace文件夹来创建一个自定义的工作空间(请注意,您必须对持久化管理器设置数据库以及访问权限)。
仓库配置文件一般是repository.xml
,其中配置了安全管理、版本控制、集群等全局属性。默认的工作空间配置模板也包含在仓库配置文件中。repository.xml
的文档类型定义(DTD)有以下文件。
所有Jackrabbit 1.x版本都完全向后兼容,因此您可以使用最新的Jackrabbit版本,而无需修改现有的仓库配置。当然,如果要启用Jackrabbit 1.4中引入的数据存储等新功能,则需要进行配置修改。
repository.xml
的文档顶层结构如下所示。声明是可选的,但是如果文件中包含,Jackrabbit 1.5将使用XML验证来确保配置文件格式正确。
从Jackrabbit 1.5开始,下面的配置元素的顺序现在已修复。
repository.xml
有如下元素:
/jcr:
系统内容树的搜索索引。有关示例存储库配置文件,请参阅Jackrabbit 1.5默认配置。
将repository.xml文件放在存储库主目录中是个好主意。这可以使您的存储库及其配置很好地包含在单个目录树中。
配置文件中的大多数条目都基于以下通用JavaBean配置模式。此类配置指定一个实现类的路径以及实现类需要的属性。
Jackrabbit支持${name}
形式的配置变量。这些变量可用于避免在配置文件中对特定选项进行硬编码。所有Jackrabbit版本都提供以下变量:
${rep.home}
: 仓库根目录${wsp.name}
:工作空间名称。仅在工作区配置中可用。${wsp.home}
:工作空间根目录。仅在工作区配置中可用。自从Jackrabbit 1.4(参见JCR-1304)以来,可以使用系统属性或任何特定于应用程序的设置作为配置变量。
安全配置用于指定内容仓库的身份验证和授权设置。安全配置的结构是:
默认情况下,Jackrabbit使用Java Authentication and Authorization Service(JAAS)对尝试访问存储库的用户进行身份验证。元素中的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
文件中的工作空间设置为:
maxIdleTime="..."/>
Workspaces
元素中指定了以下全局工作空间配置选项:
rootPath
:工作空间的本机文件系统目录。将为每个工作空间自动创建一个子目录,该子目录的路径可以在工作空间配置中用作$ {wsp.path}
变量。defaultWorkspace
:默认工作空间的名称。首次启动存储库时会自动创建此工作空间。configRootPath
:默认情况下,每个工作空间的配置存储在rootPath目录中工作空间目录中的workspace.xml文件中。如果指定了此选项,则工作空间配置文件将存储在虚拟文件系统(请参见上文)中的指定路径中。maxIdleTime
:默认情况下,Jackrabbit仅在关闭整个存储库时释放与打开的工作空间关联的资源。如果指定此选项,则设置在工作空间最大闲置时间。工作空间配置模板和所有workspace.xml
配置文件具有以下结构:
Workspace
配置元素是:
要修改现有工作空间的配置,需要更改该工作空间的
workspace.xml
文件。更改内容仓库repository.xml
文件中的元素不会影响现有工作空间。
所有可版本化节点的版本历史记录都存储在repository.xml
配置的Versioning元素中的指定的版本存储配置中。版本控制配置很像工作空间配置,因为它们都被Jackrabbit用于存储内容。版本控制和工作空间配置之间的主要区别在于,没有为版本存储指定搜索索引,因为历史版本查询用的是内容仓库的索引。另一个区别是版本控制配置没有${wsp.name}
或${wsp.path}
变量,而是在配置中显式指定版本存储的本机文件系统路径。
版本控制配置的结构是:
版本控制配置元素是:
请参阅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编码):