3

我在连接到 AEM 6.0 中的 JCR 存储库时遇到了一些问题。当我要在存储库上创建一个session时,我得到一个javax.jcr.lock.LockException: Precondition Failed.

我一直在使用本教程开始。

这是我非常简单的代码示例:

import java.io.FileNotFoundException;
import java.io.FileReader;

import javax.jcr.Repository;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;

import org.apache.jackrabbit.commons.JcrUtils;

import com.opencsv.CSVReader;


public class Main { 

    public static void main(String[] args) throws FileNotFoundException {
        Repository repository;
        FileReader fileReader;
        CSVReader csvReader;

        try {
            System.out.println("connecting to repository");
            repository = JcrUtils.getRepository("http://localhost:4502/crx/server");

            Session session = repository.login( new SimpleCredentials("admin", "admin".toCharArray())); // throws javax.jcr.lock.LockException: Precondition Failed

        }
        catch(Exception e) {
            System.out.println(e);
        }
    }

}

任何指导将不胜感激。

4

2 回答 2

6

在 JCR 存储库中,内容被组织到一个或多个工作区中,每个工作区都包含节点和属性的层次结构。因此,要创建 jcr 会话和访问节点和属性,您必须使用凭据传递工作区,默认 AEM 工作区是 crx.default

代替 :

Session session = repository.login( new SimpleCredentials("admin", "admin".toCharArray()));

利用 :

Session session = repository.login( new SimpleCredentials("admin", "admin".toCharArray()),"crx.default");

请检查以下链接

javax.jcr.lock.LockException:前提条件失败

于 2016-06-17T20:38:33.890 回答
1

显而易见的第一:AEM 服务器是否正在运行?

其次:也许您的构建环境设置不正确我能够使用您的代码和这个 maven 文件设置一个工作项目:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0     http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.stackoverflow.test</groupId>
<artifactId>access_crx_from_outside</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
    <dependency>
        <groupId>javax.jcr</groupId>
        <artifactId>jcr</artifactId>
        <version>2.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.jackrabbit</groupId>
        <artifactId>jackrabbit-jcr-commons</artifactId>
        <version>2.7.4</version>
    </dependency>

    <dependency>
        <groupId>org.apache.jackrabbit</groupId>
        <artifactId>jackrabbit-jcr2dav</artifactId>
        <version>2.6.0</version>
    </dependency>
</dependencies>

于 2015-10-14T10:11:36.530 回答