【问题标题】:Connect to AEM 6.0 JCR: Precondition Failed连接到 AEM 6.0 JCR:前提条件失败
【发布时间】:2015-10-12 14:13:56
【问题描述】:

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

我一直使用这个tutorial 开始。

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

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);
        }
    }

}

任何指导将不胜感激。

【问题讨论】:

    标签: java aem jcr http-status-code-412


    【解决方案1】:

    在 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:Precondition Failed

    【讨论】:

      【解决方案2】:

      显而易见的第一: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>
      

      【讨论】:

      • 是的,服务器当前正在运行。如果服务器没有运行,我会得到一个 ConnectException(我只是检查了一下,只是为了确保)。我目前正在尝试不同版本的jackrabbit。过去我一直在使用 JackRabbit 2.10.1
      猜你喜欢
      • 2018-08-12
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 2017-01-08
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多