- Andrew Kos
- Bill Burlein
- Bryan Williams
- Christian Vozar
- Jeff Brown
- John Kraus
- Joseph Mak
- Josh Durbin
- Mark Daugherty
- Matt Van Bergen
- Melissa Geoffrion
- Michael Kang
- Michael Chan
- Michael Hodgdon
- Mike Motherway
- Molly McDaniel
- Nadia Maciulis
- Pat McLoughlin
- Paul Michelotti
- Puru Hemnani
- Rohit Srinath
- Ryan Lunka
- Tom Kelly
All Blogs
CITYTECH Blogroll:
Adobe CQ 5.5 & JMX
Friday, March 16, 2012
Starting with CQ5.5, Adobe (Day) integrated one sorely missed functionality to the product, JMX. As with any J2EE server, JMX makes it easy to manage and monitor an application and services in real time. JMX allows for central management of managed beans or MBeans which act as wrapper for applications, components and resources. A standard MBean exposes attributes, properties and operations, which can be accessed for monitoring and invoked for certain conditions depending on underlying logic. It also helps when you don't need to restart the server to make a quick and essential change. With CQ taking prominence in today's digital media centric world, custom components are being built at a rapid pace to support and integrate several software products. Managing these custom components will become easy with JMX framework.
To take a peek at what attributes and operations are exposed with this release, let's take a look at how to set it up quickly.
Install Adobe CQ 5.5 server and set the value of CQ_JVM_OPTS to include following Java VM options in the startup script under <INSTALL>/crx-quickstart/bin.
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
If you are setting it up in production, you should enable ssl and authentication though. For test purposes, above values will work fine.
A quick look at the jconsole for the server shows following important categories of MBeans.
· com.adobe.granite
· com.adobe.granite.monitoring
· com.adobe.granite.replication
· com.adobe.granite.packaging
· osgi.compendium
· osgi.core

Looking at some of the attributes and operations in detail, which are exposed could prove very useful for your automations and monitoring products. Here are some of the interesting things I could find with a casual look at these categories individually.
com.adobe.granite:
Attributes: As you can see in the picture below, there is some backup, cluster and tar-optimization related information is readily available.

Operations: Some of the repository operations like backup, datastore GC and tar-optimization are now exposed through jmx, which can be started using some monitoring tools depending on certain metrices.

com.adobe.granite.replication: This MBean category exposes replication agent related stats and operations which could prove very useful in alerts and auto-correction of certain conditions.

osgi.compendium: This category has several operations which can be pretty useful for any auto-configuration and pre/post deployment tasks.

osgi.core: This is another very useful category which exposes several bundle and component level operations and properties.

There are several other categories which expose JVM memory and GC, logging and sling related operations and stats. All of these could prove very helpful during and after development cycle of any CQ implementation.
Apart from out of the box classes, custom classes can be exposed via JMX also. There are two main classes implementing JMX for crx:
· com.day.crx.sling.server.jmx.ManagedRepositoryMBean
· com.day.crx.sling.server.impl.jmx.ManagedRepository
Any custom JMX classes can be implemented and deployed as OSGI components in CQ server to make it available to JMX and OSGI console.
The Felix Console also includes dedicated JMX tab from where these attributes can be accessed and operations invoked.

JMX is a welcome addition to Adobe CQ 5.5 tool set. Although, it offers limited yet important options for now, I am hopeful it will offer many more valuable features in the future. I know that we will definitely leverage this to provide more in depth monitoring and control for our cloud-based managed services platform for CQ5.
Puru Hemnani
Puru Hemnani has more than 10 years of experience in the IT industry....
Recent Posts
- Descriptive JMX Beans in AEM/CQ
- Invisible requirements within Business requirements
- Building a better Options Predicate
- Javascript, This, and You.
- Extensionless URLs with Adobe Experience Manager
- The Life of a Tester in Adobe CQ World!
- Limitations of the CQ Parsys Model and the Implementation of a Nested Paragraph System
- Google Analytics and AEM: No JavaScript? No Problem.
- Using Apache FOP to generate a PDF document based on a form submission data
- Configuring SAML in AEM 5.6