Describes the technology and architecture that powers the dotCMS, a java enterprise content management system

dotCMS Content Management System (Java CMS) features: technology, language, database, databases, java, struts, spring, lucene, elasticsearch, minimum requirements, architecture

 
Open Source Java

Open Source Java

DotCMS uses a number of category leading open source projects and libraries, most of which are familiar to developers around the world. Each software library has been vetted for security and for license compatibility for our Enterprise customers. These include:

Database Independent

Because dotCMS uses Hibernate to abstract all data access, the resulting code is extremely portable across databases. Databases that dotCMS currently supports include:

  • Oracle
  • PostgreSQL
  • Microsoft SQL Server
  • MySQL
Hardware Requirements

Supported Hardware Requirements*

 

dotCMS Community Edition

dotCMS Enterprise Editions


Community Standard Professional Prime
Operating System
  • 32 or 64 bit
  • Linux
  • Windows XP, 2000, Vista or 7
  • Solaris
  • Mac OS X
  • 64 bit
  • Linux
  • Windows Server 2003+
  • OS X Server
  • 64 bit
  • Linux
  • Windows Server 2003+
  • OS X Server
  • 64 bit
  • Linux
  • Windows Server
  • OS X Server
  • AIX
  • Solaris 10+
note:
32 bit JVMs are limited to ~1.5 to 2.0GB RAM. Because dotCMS caches objects in RAM for performance, this limitation will negatively affect performance.
Hardware
  • Dual Core Pentium 2.0+
  • 4gb RAM (Shared)
  • 100 GB HD
  • 64 bit Quad Core Commercial CPU
  • 8 GB RAM (Dedicated)
  • 100GB HD
  • 64 bit Dual/Quad Core Commercial CPU
  • 8 GB RAM (Dedicated)
  • 100GB HD
  • 64 bit Dual/Quad Core Commercial CPU
  • 16 GB RAM (Dedicated)
  • 100GB HD
JVM
  • Sun Java 1.6.0_23 or higher
  • Sun Java 1.6.0_23 or higher - 64 bit
  • Sun Java 1.6.0_23 or higher - 64 bit
  • Sun Java 1.6.0_23 or higher - 64bit
note:
32 bit JVMs are limited to ~1.5 to 2.0GB RAM.  Because dotCMS caches objects in RAM for performance, this limitation can negatively affect server response times.
Application Server
  • Apache Tomcat 6+
  • Apache Tomcat 6+
  • Apache Tomcat 6+
  • JBoss 5+
  • Apache Tomcat 6+
  • JBoss 5+
  • Websphere 8+
  • Oracle/Weblogic 11
Database
  • PostgreSQL 9+
  • MySQL 5.5+
  • PostgreSQL 9+
  • MySQL 5.5+
  • PostgreSQL 9+
  • MySQL 5.5+
  • MSSQL 2005+
  • PostgreSQL 9+
  • MySQL 5.5+
  • MSSQL 2005+
  • Oracle 10+
Client Browser
  • IE 10.0+
  • Firefox
  • Safari 7+
  • Chrome
  • IE 10.0+
  • Firefox
  • Safari 7+
  • Chrome
  • IE 10.0+
  • Firefox
  • Safari 7+
  • Chrome
  • IE 10.0+
  • Firefox
  • Safari 7+
  • Chrome
LDAP Server  
  • MS Active Directory
  • Novell eDirectory
  • Sun/Oracle LDAP
  • Open LDAP
  • MS Active Directory
  • Novell eDirectory
  • Sun/Oracle LDAP
  • Open LDAP
  • MS Active Directory
  • Novell eDirectory
  • Sun/Oracle LDAP
  • Open LDAP
* DotCMS will provide support for environments that meet or exceed these requirements. Not all environment combinations are tested against. If you would like to have a custom stack or setup certified for running the dotCMS platform, see our Stack Certification Consulting Package.
Architecture

dotCMS Architecture Overview

DotCMS is an extendable web content management platform.  At the core of dotCMS is the web administrative tools. DotCMS offers full management capabilities that can be extended and customized through the use of dotCMS plugin architecture. For most Administrative functions, dotCMS uses Apache Struts for maintaining a MVC pattern for system tools. 


dotCMS Content Engine

Central to dotCMS is the Content Engine, which can be accessed programmatically via the ContentAPI or via a number of RESTful/URL addressable interfaces. Custom XML formats can be delivered using templates driven by Velocity Markup. All accesses to the Content Engine are permission based - content permissions are verified down to the object level. The ContentAPI provides pre and post interceptors that can be used to override content, checkin and publishing behaviors.


Programmatic Layers: dotCMS Web Admin Interface

The dotCMS core provides the backend interface, content management functionality, authorization and permisioning, versioning, etc.  The tooling in dotCMS follow a multi-tier architecture that clearly delineates the View/UI, the Controller logic, the Model and the API/Service layers. 

Some of the basic architectural elements are:

  • APIs:  APIs are the recommended way of interacting with the core functionality of dotCMS.  Concrete APIs con be found using the APILocator
  • Factories: Factories act as the DAO layer of dotCMS, providing single source access to objects weather they come from DB, cache or from the index.
  • Caches:  Caches are mostly handled by the different factories.  However it's important to understand that the cache plays and import role in dotCMS, therefore data should only be interacted with through the factories, to prevent inconsistencies in the cache.
  • Persistence:  Persistence to the database is handled mostly through Hibernate, using POJOs.  Transactional logic is provided by HibernateUtil and DotHibernate

Other services are provided to be leveraged during development:

  • Mail services
  • Unified logging
  • Configuration services
  • User management, both for front end and for back end.

Page Delivery from the Front end

Each node in a dotCMS cluster has an individual lucene index, memory cache and on disk cache that dotCMS uses to build and deliver a page. Dynamic pages in dotCMS can be built and delivered without ever hitting the shared database. Content and cache updates are invalidated across each node the cluster and rebuilt lazily as needed by each node.


User Interaction with dotCMS

Depending on level of expertise, dotCMS offers different ways of building content and applications  with the dotCMS system.  

Content contributors can interact with the dotCMS using web based management tools, This allows contributors to manage pages, files and content objects based on their permissions.  

DotCMS is unique in the rich tooling provided to scripting users with light programming knowledge.  These users can build templates, custom content types, custom macros and widgets.  Velocity scripting can be used to integrate with 3rd party web services, databases or any XML based data feed.  In dotCMS you can generally achieve a majority of just about any customization from within the tool itself.

Finally, for the Java developers, DotCMS offers a powerful plugin architecture with well defined  extension points that make  deeper  programatic integrations straightforward. Using plugins, a developer can add new web frameworks to dotCMS and override just about any system class or function. ViewTools provide a way to expose   custom APIs or methods  to the Velocity view layer and can drive view logic and content when building web applications in dotCMS.

Back to the top