Connection with alfresco cmis

2019-03-04 15:46发布

问题:

I am trying to connect alfresco using config parameters but i am getting error:

Config: sessionParameters.put(SessionParameter.USER, "admin");
    sessionParameters.put(SessionParameter.PASSWORD, "admin");  
    sessionParameters.put(SessionParameter.ATOMPUB_URL, "http://localhost:8080/alfresco/service/cmis");
    sessionParameters.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
    sessionParameters.put(SessionParameter.REPOSITORY_ID, "CIPBASE");
    sessionParameters.put(SessionParameter.AUTH_HTTP_BASIC, "true" );
    sessionParameters.put(SessionParameter.COOKIES, "true" );

Error is:

org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException: Not Found
    at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.convertStatusCode(AbstractAtomPubService.java:499)
    at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.read(AbstractAtomPubService.java:701)
    at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.getRepositoriesInternal(AbstractAtomPubService.java:873)
    at org.apache.chemistry.opencmis.client.bindings.spi.atompub.RepositoryServiceImpl.getRepositoryInfos(RepositoryServiceImpl.java:66)
    at org.apache.chemistry.opencmis.client.bindings.impl.RepositoryServiceImpl.getRepositoryInfos(RepositoryServiceImpl.java:92)
    at org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl.getRepositories(SessionFactoryImpl.java:137)
    at org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl.getRepositories(SessionFactoryImpl.java:114)
    at com.bvonesource.rsm.common.AlfrescoConnection.AlfrescoDument(AlfrescoConnection.java:71)
    at com.bvonesource.rsm.mgtbean.AdminManagement.MatrixMgtView.callAlfresco(MatrixMgtView.java:208)
    at com.bvonesource.rsm.mgtbean.AdminManagement.MatrixMgtView$$FastClassByCGLIB$$9e86b32e.invoke()
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
    at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:692)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)
    at com.bvonesource.foundation.aspect.TracingAspect.invoke(TracingAspect.java:81)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:599)
    at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:622)

Please help..

Thanks

回答1:

Use the following method to get session

 public Session getSession() {
    if (session == null) {
        logger.info("Not connected, creating new connection");

        // default factory implementation
        SessionFactory factory = SessionFactoryImpl.newInstance();
        Map<String, String> parameter = new HashMap<String, String>();

        // user credentials
        parameter.put(SessionParameter.USER, "admin");
        parameter.put(SessionParameter.PASSWORD, "admin");

        // connection settings
        parameter.put(SessionParameter.ATOMPUB_URL, "http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.0/atom"); 
        parameter.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value()); 

        List<Repository> repositories = factory.getRepositories(parameter);

        if (repositories != null && repositories.size() > 0) {
            logger.info("Found (" + repositories.size() + ") Alfresco repositories");
            this.session = repositories.get(0).createSession();
        } else {
            throw new CmisConnectionException("Could not connect to the Alfresco Server,"
                    + " no repository found!");
        }       
    }
    return this.session;
}


回答2:

try this worked fine for me

 private static Session getSession(String serverUrl, String username, String password) {
    SessionFactory sessionFactory = SessionFactoryImpl.newInstance();
    Map<String, String> params = new HashMap<String, String>();
    params.put(SessionParameter.USER, username);
    params.put(SessionParameter.PASSWORD, password);
    params.put(SessionParameter.ATOMPUB_URL, serverUrl);
    params.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
    List<Repository> repos = sessionFactory.getRepositories(params);
    if (repos.isEmpty()) {
        throw new RuntimeException("Server has no repositories!");
    }
    return repos.get(0).createSession();
}