javax.jcr.lock.LockException: предварительное условие не выполнено

У меня возникли некоторые проблемы с подключением к хранилищу JCR в AEM 6.0. Когда я дохожу до точки создания сеанса в репозитории, я получаю

javax.jcr.lock.LockException: предварительное условие не выполнено.

stacktrace: javax.jcr.lock.LockException: предварительное условие не выполнено в org.apache.jackrabbit.spi2dav.ExceptionConverter.generate(ExceptionConverter.java:109) в org.apache.jackrabbit.spi2dav.ExceptionConverter.generate (ExceptionConverter)j. по адресу org.apache.jackrabbit.spi2dav.ExceptionConverter.generate(ExceptionConverter.java:45) по адресу org.apache.jackrabbit.spi2dav.RepositoryServiceImpl.obtain(RepositoryServiceImpl.java:809) по адресу org.apache.ijavtain.jav (RepositoryServiceImpl.java:753) в org.apache.jackrabbit.spi2davex.RepositoryServiceImpl.obtain(RepositoryServiceImpl.java:307) в org.apache.jackrabbit.jcr2spi.RemporyImpl.151. Репозиторий.jackrabbit.commons.AbstractRepository.login(AbstractRepository.java:123) в org.test.CallSlingServlet.main(CallSlingServlet.java:63) Причина: org.apache.jackrabbit.webdav.DavException: Сбой предварительного условия в org.apache.jackbit.webdav.client.methods.DavMethodBase.getResponseException(DavMethodBase.java:162) в org.apache.jackrabbit.webdav.client.methods.DavMethodBase.getResponseBodyAsMultiStatus(DavMethodBase.java:91) в org.apache.jackrabbit.spi2dav.RemploryService (RepositoryService) .5 еще ошибка: javax.jcr.lock.LockException: предварительное условие не выполнено

Пример кода, используемого мной.

package org.test;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

import javax.jcr.Node;
import javax.jcr.Repository;
import javax.jcr.SimpleCredentials;

import org.apache.jackrabbit.commons.JcrUtils;

import com.google.api.client.repackaged.org.apache.commons.codec.binary.Base64;
import com.google.enterprise.apis.client.GsaClient;
import com.google.enterprise.apis.client.GsaEntry;
import com.google.enterprise.apis.client.GsaFeed;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;


public class CallSlingServlet {


    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        try {



            Repository repository = JcrUtils.getRepository("http://localhost:4502/crx/server");
            javax.jcr.Session session = repository.login( new SimpleCredentials("admin", "admin".toCharArray()));
            Node root1 = session.getRootNode();
            Node node = ((Node) root1).getNode("/content/act/GSAEvents"); 
            System.out.println(node.getPath()); 
            System.out.println(node.getProperty("message").getString());
        }           
        catch ( Exception ex ) {
            // a real program would need to handle this exception
            System.out.println( "error: "+ex);
        } 
    }}

1 ответ

Внутри репозитория JCR контент организован в одно или несколько рабочих пространств, каждое из которых содержит иерархическую структуру узлов и свойств. Таким образом, чтобы создать сеанс jcr и узел доступа и свойства, вам нужно передать рабочую область с учетными данными, рабочая область AEM по умолчанию - crx.default

Попробуйте код ниже

    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.HashMap;
    import java.util.Map;

    import javax.jcr.Node;
    import javax.jcr.Repository;
    import javax.jcr.SimpleCredentials;
    import org.apache.jackrabbit.commons.JcrUtils;

    public class CallSlingServlet {
        public static void main(String[] args) throws Exception {
            try {
                String WORKSPACE = "crx.default";
                Repository repository = JcrUtils.getRepository("http://localhost:4502/crx/server");
                javax.jcr.Session session = repository.login( new SimpleCredentials("admin", "admin".toCharArray()),WORKSPACE);
                Node root1 = session.getRootNode();
                Node node = ((Node) root1).getNode("/content/act/GSAEvents"); 
                System.out.println(node.getPath()); 
                System.out.println(node.getProperty("message").getString());
            }           
            catch ( Exception ex ) {
                // a real program would need to handle this exception
                System.out.println( "error: "+ex);
            } 
        }}
Другие вопросы по тегам