2015-12-29 89 views
1

我在連接到AEM 6.0中的JCR存儲庫時遇到了一些問題。當我在轉儲處創建會話時,我得到一個javax.jcr.lock.LockException:先決條件失敗

javax.jcr.lock.LockException: Precondition Failed.

stacktrace: javax.jcr.lock.LockException: Precondition Failed at org.apache.jackrabbit.spi2dav.ExceptionConverter.generate(ExceptionConverter.java:109) at org.apache.jackrabbit.spi2dav.ExceptionConverter.generate(ExceptionConverter.java:51) at org.apache.jackrabbit.spi2dav.ExceptionConverter.generate(ExceptionConverter.java:45) at org.apache.jackrabbit.spi2dav.RepositoryServiceImpl.obtain(RepositoryServiceImpl.java:809) at org.apache.jackrabbit.spi2dav.RepositoryServiceImpl.obtain(RepositoryServiceImpl.java:753) at org.apache.jackrabbit.spi2davex.RepositoryServiceImpl.obtain(RepositoryServiceImpl.java:307) at org.apache.jackrabbit.jcr2spi.RepositoryImpl.login(RepositoryImpl.java:151) at org.apache.jackrabbit.commons.AbstractRepository.login(AbstractRepository.java:123) at org.test.CallSlingServlet.main(CallSlingServlet.java:63) Caused by: org.apache.jackrabbit.webdav.DavException: Precondition Failed at org.apache.jackrabbit.webdav.client.methods.DavMethodBase.getResponseException(DavMethodBase.java:162) at org.apache.jackrabbit.webdav.client.methods.DavMethodBase.getResponseBodyAsMultiStatus(DavMethodBase.java:91) at org.apache.jackrabbit.spi2dav.RepositoryServiceImpl.obtain(RepositoryServiceImpl.java:781) ... 5 more error: javax.jcr.lock.LockException: Precondition Failed

我使用的示例代碼。

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

回答

2

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