2

I need to design a CMS system for an university project for a team with inexperienced java developers. I looked into the different options(especially Apache Jackrabbit and JCR) but I am not sure what to use. We have to develop web interface for the DMS where one can upload document and fill custom set of properties to it (the properties are the same for all documents). I am not sure if my team will be able to work with Jackrabbit.

Is using a database for storing documents in Base64 encoding an option?

I plan to use JSF, JPA, hibernate, EJB and JBoss AS,

The system has to be able to:

  • Free product or 3rd party library etc. which is easy to use from inexperienced devs;
  • Store documents;
  • Support versions;
  • Support archiving (low priority);
  • Support set of properties i.e. documentDescription: "some txt goes here".
Ivo
  • 1,228
  • 1
  • 15
  • 33
  • 1
    looking at your requirements, it sounds like you could just use a Java driver for CouchDB for anything except the UI. – Prinzhorn Oct 05 '13 at 09:16
  • I took a brief look at the documentation of CouchDB, but it seems I can't save the content of let's say a .pdf document together with the JSON object with the properties. Perhaps I didn't formulate right the question... I want to save the actual content of the document as well as the properties. I could encode/decode the content to Base64 and store it that way but is this a good solution – Ivo Oct 05 '13 at 11:08
  • Take a second look at the documentation, it's **exactly** what you want: http://wiki.apache.org/couchdb/HTTP_Document_API#Attachments Every CouchDB document (which stores your document properties) can have attachments (BLOBs, e.g. a PDF file). – Prinzhorn Oct 05 '13 at 11:17
  • http://www.ektorp.org/reference_documentation.html#d100e902 – Prinzhorn Oct 05 '13 at 11:23

3 Answers3

2

From my exprience JCR itself is too lowlevel to be used by a team of inexperienced developers. You could use jcrom for object mapping, but I cannot say that it is easy or flawless.

Martin Fowler wrote that CMS is one of the applications for document oriented NoSQL databases. You could try to use MongoDB with Morphia for object mapping. I found it very easy to use and deploy (again from my experience to start with MongoDB is easier than to start with JCR). While documentation for both jcrom and Morphia is far from perfect, I find Morphia much easier to use.

For storing files you can use use GridFS.

But beware that if you use MongoDB instead of JCR you will not have transactions and versioning. If you do not transactions and you will try to use MongoDB you will have to implement some transactions by yourself, which can be not very easy.

P.S. I am not sure if you can use JPA/Hibernate for JCR. From my research I found only two implementations of object mapping for JCR: jcrom and some OM implemmentation from Apache Jackrabbit (JCR implementation).

Ivan Mushketyk
  • 8,107
  • 7
  • 50
  • 67
  • Sadly I can't use NOSQL database, because the admins who are responsible for the university's environment in which we will deploy the project don't want to use NOSQL db (they didn't even want to install postgres), also I thought JSON will confuse them. So I went with jcr/jackrabbit and developed a PoC web app from which the students can see basic use of JCR and jackrabbit. Hopefully from this point the team can take it on. – Ivo Oct 23 '13 at 13:50
1

Hippo could be a project that meets your needs. It's open source. With an enterprise subscription you'll be able to meet your archiving requirement.

An example of a university site build with Hippo is the site of the University of Amsterdam.

1

If you need only CMS, you could try CUBA Platform. I think it's the very cool platform for intranet or CMS projects.

This framework based on Vaadin and Spring technologies. By the way, it's opensource!

Also, you can see demo CMS for Public Library