java - 使用带有 Restful Web 服务的开放 cmis 在 Alfresco 中创建文件夹

标签 java web-services alfresco cmis create-directory

使用开放式 cmis 和 Restful Web 服务在 Alfresco 中创建文件夹

import java.util.HashMap;

import java.util.Map;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.apache.chemistry.opencmis.client.api.Folder;
import org.apache.chemistry.opencmis.client.api.Session;
import org.apache.chemistry.opencmis.commons.PropertyIds;



@Path("/testClient")
public class TestClient
{

     Folder mainFolder;
     Folder subFolder;
     Folder permission;


     @POST
     @Path("{createFolder}")
     @Consumes("content-type = application/x-www-form-urlencoded")
     @Produces(MediaType.APPLICATION_JSON)
     public Response createFolder(@PathParam("foldername")  String foldername )
     {
         Session session = Util.getSession();
            Folder rootFolder = session.getRootFolder();
            Map<String, Object> folderProp = new HashMap<String, Object>();
            folderProp.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder");
            folderProp.put(PropertyIds.NAME, ""+foldername.trim());
            Response res = null;
            mainFolder = rootFolder.createFolder(folderProp);

            if(mainFolder.getName()==foldername)
            {
                res = Response.status(200).entity("Folder Created").build();
                System.out.println("Folder Created");
            }

            else
            {
                res = Response.status(201).entity("Folder Created").build();
                System.out.println("Folder Not  Created");
            }

            return res;


     }


}

如何使用 Open Cmis 和 RESTFul 在 Alfresco 中创建文件夹 我尝试过的网络服务,但它向我显示以下错误:

StackTrace : 

INFO: Initialization processed in 475 ms Jan 12, 2017 1:02:59 PM org.apache.catalina.core.StandardService startInternal INFO: Starting service Catalina Jan 12, 2017 1:02:59 PM org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/7.0.73 Jan 12, 2017 1:02:59 PM org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [108] milliseconds. Jan 12, 2017 1:02:59 PM org.apache.catalina.loader.WebappClassLoaderBase validateJarFile INFO: validateJarFile(F:\ALFRESCOJAVAw.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\CreateFolderRESTAPI\WEB-INF\lib\servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class Jan 12, 2017 1:03:03 PM org.apache.catalina.startup.TldConfig execute INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. Jan 12, 2017 1:03:03 PM com.sun.jersey.api.core.servlet.WebAppResourceConfig init INFO: Scanning for root resource and provider classes in the Web app resource paths: /WEB-INF/lib /WEB-INF/classes Jan 12, 2017 1:03:06 PM com.sun.jersey.api.core.ScanningResourceConfig init INFO: No root resource classes found. Jan 12, 2017 1:03:06 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses INFO: Provider classes found: class org.apache.cxf.jaxrs.provider.CachingMessageBodyWriter class org.apache.cxf.jaxrs.provider.AbstractCachingMessageProvider class org.apache.cxf.jaxrs.provider.JAXBElementProvider class org.apache.cxf.jaxrs.provider.XPathProvider class org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider class org.apache.cxf.jaxrs.provider.RequestDispatcherProvider class org.apache.cxf.jaxrs.provider.FormEncodingProvider class org.apache.cxf.jaxrs.validation.JAXRSBeanValidationInInterceptor class org.apache.cxf.jaxrs.provider.DataBindingProvider class org.apache.cxf.jaxrs.provider.CachingMessageBodyReader class org.apache.cxf.jaxrs.validation.ValidationExceptionMapper class org.codehaus.jackson.jaxrs.JsonMappingExceptionMapper class org.codehaus.jackson.jaxrs.JacksonJsonProvider class org.apache.cxf.jaxrs.provider.MultipartProvider class org.apache.cxf.jaxrs.provider.XSLTJaxbProvider class org.apache.cxf.jaxrs.provider.DataSourceProvider class org.apache.cxf.jaxrs.provider.SourceProvider class org.apache.cxf.jaxrs.validation.JAXRSBeanValidationOutInterceptor class org.codehaus.jackson.jaxrs.JsonParseExceptionMapper Jan 12, 2017 1:03:06 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFO: Initiating Jersey application, version 'Jersey: 1.19 02/11/2015 05:39 AM' Jan 12, 2017 1:03:06 PM com.sun.jersey.server.impl.application.RootResourceUriRules SEVERE: The ResourceConfig instance does not contain any root resource classes. Jan 12, 2017 1:03:06 PM com.sun.jersey.spi.inject.Errors processErrorMessages SEVERE: The following errors and warnings have been detected with resource and/or provider classes: SEVERE: Missing dependency for method public void org.apache.cxf.jaxrs.provider.AbstractCachingMessageProvider.setMessageContext(org.apache.cxf.jaxrs.ext.MessageContext) at parameter at index 3 SEVERE: Missing dependency for method public void org.apache.cxf.jaxrs.provider.RequestDispatcherProvider.setMessageContext(org.apache.cxf.jaxrs.ext.MessageContext) at parameter at index 2 SEVERE: Missing dependency for method public void org.apache.cxf.jaxrs.provider.AbstractCachingMessageProvider.setMessageContext(org.apache.cxf.jaxrs.ext.MessageContext) at parameter at index 3 SEVERE: Missing dependency for field: private org.apache.cxf.jaxrs.ext.MessageContext org.apache.cxf.jaxrs.provider.MultipartProvider.mc SEVERE: Missing dependency for field: private org.apache.cxf.jaxrs.ext.MessageContext org.apache.cxf.jaxrs.provider.SourceProvider.context SEVERE: Missing dependency for method public void org.apache.cxf.jaxrs.provider.JAXBElementProvider.setMessageContext(org.apache.cxf.jaxrs.ext.MessageContext) at parameter at index 16 SEVERE: Missing dependency for method public void org.apache.cxf.jaxrs.provider.JAXBElementProvider.setMessageContext(org.apache.cxf.jaxrs.ext.MessageContext) at parameter at index 3 SEVERE: Missing dependency for field: private org.apache.cxf.jaxrs.ext.MessageContext org.apache.cxf.jaxrs.provider.FormEncodingProvider.mc Jan 12, 2017 1:03:06 PM org.apache.catalina.core.ApplicationContext log SEVERE: StandardWrapper.Throwable com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes. at com.sun.jersey.server.impl.application.RootResourceUriRules.(RootResourceUriRules.java:99) at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1359) at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:180) at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:799) at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:795) at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193) at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795) at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:790) at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:509) at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:339) at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605) at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207) at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:394) at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:577) at javax.servlet.GenericServlet.init(GenericServlet.java:158) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1269) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1182) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1072) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5368) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5660) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

Jan 12, 2017 1:03:06 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet [AlfrescoRest] in web application [/CreateFolderRESTAPI] threw load() exception
com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
    at com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:99)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1359)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:180)
    at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:799)
    at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:795)
    at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:790)
    at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:509)
    at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:339)
    at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605)
    at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207)
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:394)
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:577)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1269)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1182)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1072)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5368)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5660)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Jan 12, 2017 1:03:06 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-7072"]
Jan 12, 2017 1:03:06 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8010"]
Jan 12, 2017 1:03:06 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 7493 ms
`

请帮助我提前解决此错误。

web.xml

 `<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
 id="WebApp_ID" version="3.1">
 <display-name>Restful Web Application</display-name>

 <servlet>
  <servlet-name>CreateFolderRESTAPI</servlet-name>
  <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>

  <init-param>
   <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>com.bizruntime.*</param-value>
  </init-param>

  <init-param>
   <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
   <param-value>true</param-value>
  </init-param>
 </servlet>

 <servlet-mapping>
  <servlet-name>CreateFolderRESTAPI</servlet-name>
  <url-pattern>/*</url-pattern>
 </servlet-mapping>

</web-app>`

最佳答案

我已经测试过这个方法,它对我来说效果很好

public static void createNewFolderIn(String serverUrl, String username, String password, String path, String folderName) {
    Folder root = getFolderByPath(serverUrl, username, password, path);
    Map<String, Object> properties = new HashMap<>();
    properties.put(PropertyIds.OBJECT_TYPE_ID, BaseTypeId.CMIS_FOLDER.value());

    properties.put(PropertyIds.NAME, folderName);
    List<Ace> addAces = new LinkedList<>();
    List<Ace> removeAces = new LinkedList<>();
    List<Policy> policies = new LinkedList<>();
    Folder newFolder = root.createFolder(properties, policies, addAces, removeAces, getSession(serverUrl, username, password).getDefaultContext());

  }

希望对您有帮助。

关于java - 使用带有 Restful Web 服务的开放 cmis 在 Alfresco 中创建文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41628165/

相关文章:

python - 从我的 sql 检索数据并使用 python 将其发送到 Web 服务

web-services - 为 IIS 应用程序池帐户安装客户端证书

java - 露天 : How to filter documents in workflow

tomcat - Alfresco 5.1 Community 无法启动

java - 如何用Java读取文件

java - Axis 2+壁垒 : Must Understand check failed for header Security

java - PHP 站点调度 Java 执行?

java - 通过路径获取 Alfresco NodeRef(实时、竞争条件安全)

二叉树中的 Java 泛型,类型不兼容错误

java - 触摸时更改按钮背景