【深入浅出Apache Jackrabbit】第三章 Repository 配置文件

系列文章目录

第一章 初见 Apache Jackrabbit
第二章 Apache Jackrabbit 入门
第三章 Repository 配置文件
第四章 Apache Jackrabbit 文件存储
第五章 Apache Jackrabbit 版本管理



Apache Jackrabbit 是一个完全符合 Java 内容库 API (JCR) 的开源内容库。它可以作为一个持久化的仓库来存储和检索数据。下面讲解如何自定义Repository 配置文件配置 Apache Jackrabbit 作为持久化仓库,并且可指向仓库的存储位置。

一、创建一个 Repository 配置文件

在 Apache Jackrabbit 中,你需要创建一个 XML 文件来配置你的内容库。这个配置文件通常称为 repository.xml。下面是我的配置文件,配置文件中已设置它成为一个持久化的仓库并且指向仓库的存储位置在D盘:Jackrabbit目录下。

<?xml version="1.0"?>
<Repository>
    <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
        <param name="path" value="D:\\Jackrabbit/repository"/>
    </FileSystem>

    <DataStore class="org.apache.jackrabbit.core.data.FileDataStore"/>

    <Security appName="Jackrabbit">
        <SecurityManager class="org.apache.jackrabbit.core.DefaultSecurityManager" workspaceName="security">
        </SecurityManager>

        <AccessManager class="org.apache.jackrabbit.core.security.DefaultAccessManager">
        </AccessManager>

        <LoginModule class="org.apache.jackrabbit.core.security.authentication.DefaultLoginModule">
            <param name="anonymousId" value="anonymous"/>
            <param name="adminId" value="admin"/>
        </LoginModule>
    </Security>

    <Workspaces rootPath="D:\\Jackrabbit/workspaces" defaultWorkspace="default"/>

    <Workspace name="${wsp.name}">
        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
            <param name="path" value="D:\\Jackrabbit/${wsp.name}"/>
        </FileSystem>
        <PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.DerbyPersistenceManager">
            <param name="url" value="jdbc:derby:D:\\Jackrabbit/${wsp.name}/db;create=true"/>
            <param name="schemaObjectPrefix" value="${wsp.name}_"/>
        </PersistenceManager>
        <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
            <param name="path" value="D:\\Jackrabbit/${wsp.name}/index"/>
            <param name="supportHighlighting" value="true"/>
        </SearchIndex>
    </Workspace>

    <Versioning rootPath="D:\\Jackrabbit/version">
        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
            <param name="path" value="D:\\Jackrabbit/version" />
        </FileSystem>

        <PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.DerbyPersistenceManager">
            <param name="url" value="jdbc:derby:D:\\Jackrabbit/version/db;create=true"/>
            <param name="schemaObjectPrefix" value="version_"/>
        </PersistenceManager>
    </Versioning>

    <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
        <param name="path" value="D:\\Jackrabbit/repository/index"/>
        <param name="supportHighlighting" value="true"/>
    </SearchIndex>

    <Cluster id="node1">
        <Journal class="org.apache.jackrabbit.core.journal.MemoryJournal"/>
    </Cluster>
</Repository>

二、初始化 Repository

有了配置文件,你就可以使用以下代码来初始化 Repository:

本例中使用的是maven项目演示,项目结构如下:
在这里插入图片描述
代码如下(示例):

import org.apache.jackrabbit.core.RepositoryImpl;
import org.apache.jackrabbit.core.config.RepositoryConfig;

import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;

public class Demo1 {
    public static void main(String[] args) throws RepositoryException, URISyntaxException {
        Demo1 demo1 = new Demo1();
        demo1.create();
    }

    private void create() throws RepositoryException, URISyntaxException {
        ClassLoader classLoader = getClass().getClassLoader();
        // 获取资源的 URL
        URL resourceUrl = classLoader.getResource("repository.xml");
        File repositoryDirectory = new File(resourceUrl.toURI());
        RepositoryConfig repositoryConfig = RepositoryConfig.create(repositoryDirectory.getParentFile());
        Repository repository = RepositoryImpl.create(repositoryConfig);
        // To login
        Session session = repository.login(new SimpleCredentials("admin", "admin".toCharArray()));
    }
}

运行后效果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值