In abstract we can identify content management as content storage.Content management system supports users with content searching, versioning, transactions, observation, and more.The question is can existing relational databases fulfill those high requirements like versioning content.Its is possible but its not the most feasible way to manage versions of a content in relational database . So content repositories came to display. They can easily replace a relational database with a content repository because those repositories have most of the features that a RDBMS have and it have more features that RDBMS system doesn't have like versioning content.
For those king of special needs Java has introduced an API called JCR (Java Content Repository) api and its has two specifications (JSR 170,JSR 283).
How to implement a content repository with JCR ?
It is not feasible to implement a repository with JCR api so Apache has introduced a framework called Apache Jackrabbit which is totally build upon those two JCR specification. We can easily build our content repository or a Content management system by using this framework.
In this blog I'm going to bult a sample blog site (which is totally bult upon JCR and Apache jackrabbit ) by step by step because when I was new to jackrabbit I face so much deficulties with this framework .Still world is stuck with RDBMS and their is no huge JCR or Jackrabbit user community so beginers are unable to find sample codes or some help on the internet .so I like to give others what I found :D