当前位置: 首页 > 知识库问答 >
问题:

使用带有restful Webservices的open cmis在Alfresco中创建文件夹

戚繁
2023-03-14

使用带有restful Webservices的open cmis在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 Webservices在Alfresco中创建文件夹?我尝试了,但它显示以下错误:

StackTrace : 
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>`

共有1个答案

明阳旭
2023-03-14

我已经测试了这种方法,它对我来说很有效。

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

  }

希望这对你有所帮助。

 类似资料:
  • 我想知道如何使用OpenCMIS在Alfresco中手动更改文档版本?从现在开始,当我更新文档时,每次alfresco都会改变版本本身,但我想从用户输入中改变版本,如1.0、2.0、2.1等。 为(如)。document.txt 1.0,document.txt 1.1 我想放置版本2.3而不是document.txt1.1

  • 嗨,伙计们,我正在做户外使用opencmis apache化学。我做了许多服务,如创建文件夹,子文件夹,上传,下载与版本更新。现在我试图生成文件夹/文档的链接,无论链接是在Alfresco的仪表板上。有人可以帮助我使用()对链接进行分类吗??提前致谢

  • 我使用open cmis在Alfresco存储库(5.1e)中创建带有附件的文件夹(自定义类型)。文件夹创建成功,但对于将文档(cmis:document-cm:content)创建为附件,我得到以下异常: 下面是将文档添加到文件夹的源代码(方法):

  • 我有一个名为“alfrescodocs:uploadedfrom”的方面,它有一个名为“alfrescodocs:uploadsource”的属性。我正在使用alfresco-opencmis-extension来附加这个方面与创建上的文档,并在其属性中设置一些值。我正在使用下面的代码。 我使用:http://localhost:8080/alfresco/api/-default-/public

  • 我正在尝试动态创建一个zip文件,其中包含一组从servlet返回的csv文件,这非常令人困惑。一点指导就好了。以下是我手头的几段代码,它们需要协同工作:

  • 问题内容: 文件孔是文件中的空白空间,但是不占用任何磁盘空间,并且包含空字节。因此,文件大小大于其在磁盘上的实际大小。 但是,我不知道如何创建带有文件孔的文件进行试验。 问题答案: 将命令与参数一起使用。 这会为您创建一个从字节8192到字节28671的漏洞。 这是一个示例,说明该文件确实存在漏洞(该命令告诉您文件正在使用多少磁盘块): 如您所见,带孔的文件尽管大小相同,但占用的磁盘块较少。 如果