The talk that Benjamin gave at the local Java SIG this week was so well-received, we decided to host an encore version as a webinar on 22 April, at 9am PT / 12pm ET / 5pm GMT. Benjamin will demonstrate how the eXo Platform can be used as an online Java development platform to create public and private clouds. He will walk through the different technologies that eXo leverages, such as the GateIn open source portal framework, JAX-RS, Groovy and OpenSocial Gadgets. Specifically, attendees will learn how to:
use a JCR data store to model a cloud tenant
store and dynamically deploy JAX-RS services written in Groovy
store and dynamically deploy OpenSocial Gadgets that connect to previously online-created REST APIs
remotely expose those Gadgets to the public cloud
The complete abstract and other details are available on the registration page.
Prabhat Jha, one of the JBoss developers collaborating with the eXo team to build GateIn, shows how to add a tic-tac-toe gadget to GateIn on his blog today. Here’s how he describes it:
If you thought Portal was only about serious stuffs such as content aggregation, integration of different applications, out of box personalization and natural front end to SOA etc then think again. Using GateIn’s gadgets, you already could import different cool gadgets say from Google to your dashboard and page. Now you can tic-tac-toe as well. Here is a screen shot from GateIn Portal for you i-dont-believe-until-i-see kinds.
Last week we announced that eXo Platform has built an open source implementation of OASIS’s Content Management Interoperability Services CMIS specification. We licensed this under the LGPL license, and released it officially as xCMIS 1.0 beta1.
This release includes CMIS server with all the services implemented according to Content Management Interoperability Services (CMIS) Version 1.0 Committee Draft 06 for REST AtomPub and Web Services (SOAP/WSDL) protocol bindings. The project is hosted on the Google Code forge, check it out on http://code.google.com/p/xcmis/. I wanted to take a few minutes to answer some of the most common questions from developers about the new xCMIS project.
What is the xCMIS project, and what does it do?
xCMIS is an open source, server side Java CMIS implementation that is able to expose the content in existing content repositories according to the protocols defined in the CMIS spec
xCMIS will give developers a way to make their content repositories “pluggable” on the server side – thanks to an internal Storage Provider Interface and additional protocol on-demandbindings
xCMIS will provide (several) CMIS client frameworks for repository-application and repository-repository interactions. The programming language and supported protocol can be selected by the user. (For example, the reasonable choice for use with web applications, gadgets, and/or mashups is JavaScript or GWT over REST AtomPub, while for inter-repository exchange it may be Java over Web Services, i.e. WSDL/SOAP.)
Both the server and client sides of xCMIS are easily integrated in the eXo Platform 3.0 infrastructure. In particular, xCMIS exposes the eXo JCR content repository and provides a framework for building web applications and gadgets for the GateIn portal
Enough talk already! How do I download and start to play with xCMIS on my local workstation?
The xCMIS server is packaged as a J2EE Web archive xcmis.war, which you can download and install on any Java servlet container. Or, you can build it on your own from the source code by following these simple instructions. Finally, the easiest option might be to use the “download and go” version that we prepared – it’s basically Apache Tomcat bundled with an xCMIS server on /xcmis context path.
By default the xCMIS server includes both REST AtomPub and Web Services (SOAP/WSDL) protocol bindings.
If you really wanted to get “under the hood”, you can explore the capabilities of xCMIS using curl or Poster FireFox add-on, or just try using the information from a WADL file.
The xCMIS bundle includes one CMIS repository with an empty eXo JCR and JCR WebDAV server inside. The name of the JCR repository is “repository” and the name of JCR workspace is “cmis”. So, it is possible to obtain access to the same content using WebDAV URL
http://localhost:8080/xcmis/rest/jcr/repository/cmis/
If you want to save time, you can download the xCMIS server with a full-featured CMIS GWT UI gadget inside (loaded remotely from xcmis.org site). It can be run the same way as a bare server; then you can go to http://localhost:8080/xcmis/xcmis-demo-gadget/GadgetWrapper.html to check out the CMIS visually. It should look like this:
The interface is pretty simple and intuitive, and includes a toolbar, right-button context menu, drag-and-drop features, etc.
How do I use xCMIS remotely?
We created the dedicated resource xcmix.org that has xCMIS deployed on the GateIn portal. Here you can find and use the CMIS Expert gadget, and a really cool CMIS Zoho gadget. This one demonstrates multiple CMIS implementations (xCMIS, Alfresco CMIS and Nuxeo CMIS) in action. You can browse the different CMIS repositories, see the content stored within them, and most importantly – you can view and modify files in Zoho editor.
Feel free to build GateIn yourself and add a local xCMIS server as described in the wiki, or use a remote one (http://xcmis.org/rest/cmisatom – for REST AtomPub protocol). However, you might want to note that xCMIS beta1 uses eXo JCR 1.12 CR1, so make sure you use an appropriate version of GateIn. It should be at least as recent as GateIn 3.0 beta 5 (as of the Feb 11, 2010 release, only GateIn built using trunk is suitable!).
And, of course, it is possible to use third-party CMIS clients such as IBM CMIS Firefox Connector, CMIS Spaces Flex+AIR and (I am pretty sure) other clients that are compatible with CMIS 1.0, all in the same way described in the xCMIS wiki (just using a remote server).
What’s next for xCMIS?
The CMIS specification is close to the final state, so that means we’re close as well - once CMIS is officially out, we’ll put out the final xCMIS release shortly after that
Open the source code for the GWT CMIS framework and move it to xCMIS project
Finalize the Storage Provider Interface architecture
Refactor the search engine, decoupling it from JCR storage
Refactor a CMIS configuration to make it more clear (trying different types of configurations for different IoC containers)
Add federated search between several types of CMIS repositories
Check out other types of clients
And other cool stuff…
We’d love to hear your feedback. If you want to discuss the project, talk about new ideas, make suggestions for improving the documentation, or anything else, please get involved!
To learn more, check out the project Wiki: http://code.google.com/p/xcmis/w/list
To see the source code: http://code.google.com/p/xcmis/source/checkout
To download the binaries: http://code.google.com/p/xcmis/downloads/list
To play with the latest demos: http://xcmis.org/portal/public/classic/CMISExpert
eXo Social allows to create openSocial applications. So you no more need to write any line of java to create an application for eXo. The only thing needed is to respect the openSocial standard (xml, html and javascript). The backend, if there is a need of one, can be written in any language.
As an example, I wrote a simple code sharing application based on appEngine during the Google DevFest. Basically you enter the code you want to share, and the application give you a URL to share it with your friends. To allow to access to this application, I wrote a simple gadget that allows to enter some code, send it to the service and share the URL with my contacts. To achieve this, I just wrote few lines of python deployed on appEngine to exchange information in JSON with my gadget and only javascript, css and html in my gadget.