Magnolia 4.5 reached end of life on June 30, 2016. This branch is no longer supported, see End-of-life policy.

Page tree
Skip to end of metadata
Go to start of metadata

CMIS (Content Management Interoperability Services) is a specification for improving interoperability between enterprise content management systems. CMIS makes it possible to expose documents stored in a Magnolia repository to other systems. This means you can access and edit documents residing in the DMS using a "consumer" application such as Microsoft SharePoint, Alfresco or Photoshop. The documents are exposed to the consumer as if they were local documents. Magnolia's CMIS implementation is based on Apache Chemistry.

Download

CMIS is a Community Edition module (4.5 and higher). Download the module from the Nexus repository.

Installing

To install the module, see the general module installation instructions.

Uninstalling

See the general module uninstalling instructions and advice.

Defining Maven dependencies

The CMIS module depends on several libraries. The easiest way to include them is to add a dependency XML into your Maven project. Maven will retrieve them automatically when you build the project.

<dependency>
  <groupId>info.magnolia.cmis</groupId>
  <artifactId>magnolia-module-cmis</artifactId>
  <version>1.0</version>
</dependency>

(warning) Make sure you have the magnolia.forge.releases mirror registered in Maven settings.xml. You can either add the mirror yourself or execute the Maven artifact. Then update your project pom.xml and define a dependency to the CMIS module pom.

Alternatively, add the dependent libraries manually in the WEB-INF/lib folder:

  • activation-1.1
  • antlr-2.7.7
  • antlr-runtime-3.2
  • chemistry-opencmis-commons-api-0.6.0
  • chemistry-opencmis-commons-impl-0.6.0
  • chemistry-opencmis-server-bindings-0.6.0-classes
  • chemistry-opencmis-server-jcr-0.6.0-classes
  • chemistry-opencmis-server-support-0.6.0
  • jaxb-api-2.1
  • jaxb-impl-2.1.11
  • jaxws-rt-2.1.7
  • json-simple-1.1
  • mimepull-1.3
  • resolver-20050927
  • stax-ex-1.2
  • streambuffer-0.9
  • stringtemplate-3.2
  • wstx-asl-3.2.3

Some of the web services libraries are included in the JDK installation. If you are adding libraries manually, replace old libraries with the latest ones. If you see errors that suggest a version conflict, it may be that you have a different version of a required library in the JDK. We strongly recommend using Maven to build your war file; Maven detects and resolves library conflicts or gives an error if the conflict cannot be resolved automatically.

Deploying sun-jaxws.xml with a Maven overlay

The CMIS module provides an installation task for the extraction of dependencies. With most application servers the task works fine. However, if you use the unextracted WAR deployment that JBoss offers, the task will likely fail to deploy sun-jaxws.xml.

sun-jaxws.xml is a proprietary deployment descriptor needed when Web services are deployed as a standard WAR archive on a non-Java EE5 servlet container using Sun's reference implementation.

Sun's RI uses WSServletContextListener as the listener for servlet context events and WSServlet as the dispatcher servlet; both of which have to be declared in web.xml. The sun-jaxws.xml file is then required to define web service end points for the WSServlet to let it know to which end point a service request must be dispatched. - Stack Overflow: sun-jaxws.xml - When is it needed and when not? 

Deploy the sun-jaxws.xml file to your WEB-INF directory. The file is inside the CMIS JAR file in /info/magnolia/module/cmis/overlay-files/WEB-INF/sun-jaxws.xml. Copy it by hand or define a Maven overlay in the configuration element of your Maven WAR plugin to automate the deployment.

Maven overlay
<configuration>
  <overlays>
    <overlay>
      <groupId>info.magnolia.cmis</groupId>
      <artifactId>magnolia-module-cmis</artifactId>
      <type>jar</type>
      <includes>
        <include>/info/magnolia/module/cmis/overlay-files/WEB-INF/sun-jaxws.xml</include>
      </includes>
      <targetPath>WEB-INF/sun-jaxws.xml</targetPath>
    </overlay>
  </overlays>
</configuration>

Protocol bindings

Magnolia is a CMIS-compliant repository. This means that Magnolia provides both a SOAP binding and a REST binding for accessing content. Each binding has a binding URL. Enter the URL in your consumer client such as SharePoint in order to see the content of the exposed repository.

SOAP Web services access

SOAP-based Web services are well-known and used in many organizations. The SOAP binding maps directly to the CMIS domain model, services and method.

When accessing content with SOAP Web services the binding URL is:

http://<domain>[:<port>]/<contextPath>/.magnolia/cmisws/NavigationService?wsdl

RESTful AtomPub access

The REST protocol is commonly used in Web 2.0 applications. You may recognize it from blogs and RSS. CMIS makes the content available in the AtomPub format. When accessing content with RESTful AtomPub, the binding URL is:

http://<domain>[:<port>]/<contextPath>/.magnolia/cmisatom/

Connecting to the repository

CMIS Workbench

CMIS Workbench is CMIS desktop client for developers. It is a repository browser and an interactive testbed for the OpenCMIS client API. You can use it to test and demonstrate CMIS access to Magnolia.

To connect to the dms workspace:

  1. Download and install CMIS Workbench.
  2. Start the application.
    ./workbench.sh
  3. Fill connection and login details in the login dialog:
    • URL: http://<domain>[:<port>]/<contextPath>/.magnolia/cmisws/NavigationService?wsdl
    • Binding: Web Services
    • Username: Any valid Magnolia user such as superuser.
    • Password: Magnolia user's password.
    • Authentication: Standard
    • Compression: On
    • Client Compression: Off
    • Cookies: Off
  4. Click Load Repositories to load a list of CMIS compliant repositories. In this case the only repository is the dms workspace in Magnolia.
  5. Click Login.

The application displays the contents of the dms workspace. Folders and documents in the dms workspace are displayed in the left pane. Double-click to open them.

Microsoft SharePoint

Using CMIS you can expose the Magnolia dms repository to SharePoint users, where it will appear as a standard SharePoint folder.

  1. Install SharePoint Server. Version 2010 is tested and known to work.
  2. Run the Administration Toolkit installer. It installs a web solution package (WSP) in C:\Program Files\Microsoft\SharePoint 2010 Administration Toolkit\Content Management Interoperability Services (CMIS) Connectors\spcmis.wsp. This package contains the Consumer features you need to access Magnolia content.
  3. Go to the SharePoint 2010 Management Shell,
  4. Run the following command:

    Add-SPSolution -LiteralPath 'C:\Program Files\Microsoft\SharePoint 2010 Administration - Toolkit\Content Management Interoperability Services (CMIS) Connectors\spcmis.wsp'
  5. Go to Central Administration > System Settings > Farm Settings > Manage farm solutions.
  6. Click spscmis.wsp, choose the appropriate deployment settings, and click Deploy Solutions.
  7. Configure a secure store service.
  8. Activate the CMIS Consumer feature in site collection features.
  9. Add CMIS consumer web part to the page where you want it.
  10. In Specify WSDL Address, add the SOAP Web service binding URL http://<domain>[:<port>]/<contextPath>/.magnolia/cmisws/NavigationService?wsdl
  11. In WS-Security required, select the Basic checkbox.
  12. Click Get repository list.
  13. Select the Magnolia repository form the list and click Apply.

The Web Part is added on the page. It displays the contents of the dms workspace.

Demonstrating content access

To demonstrate content access:

  1. Log into Magnolia.
  2. Create a new folder in the DMS.
  3. Open the consumer application such as SharePoint.
  4. In the consumer application, navigate to the exposed dms workspace.
  5. Open the folder you created.

2 Comments

  1. Why is this module not listed under the 5.4.x documentation anymore? Has the CMIS module been replaced by another, or does it not work with the 5.4.x versions yet/anymore?

    1. Last time I checked the CMIS module was not yet migrated to Magnolia 5. But according to 5.x Modules Migration it should work but has not been tested. I raised an issue to update the documentation. DOCU-622