Both AD4J (JVM Diagnostics) and OCAMM (ADP) are application performance mgmt solutions. Both of these focus on java-j2ee applications diagnostics. Often we come across this question, how does one know which solution should be used where? What is the underlying technology? Though there is some common functionality overlap between these solutions. But in general, functionally and technically, both the tools are very different.
- Both of these solutions focus on java-j2ee applications diagnostics.
- Both the solutions have their respective agents that need to be deployed on the target app server that one wants to monitor.
- Both have similar architecture like manager, agent and UI. Where agent is deployed on target app server (JVM), monitors its activities, gathers data and sends it to respective manager. Manager in turn processed data and collect it in repository. UI displays the entire data.
Let me list some of the differences:
- Ad4j focuses primarily on exact response time and invocation count(cost/sample) metrics for service-layer constructs (methods/requests), but is limited in its ability to view arbitrary method metrics. However it does not have any higher level(application) context in relation to metadata constructs such as BPEL, WLI, or Portal. While CAMM focuses primarily on these higher-level constructs, but is limited in its ability to view arbitrary method metrics. Therefore, the two solutions actually compliment to each other .
- Ad4j focuses on JVM level diagnostics. It shows top methods, top requests, top DB states and Top SQLs for a set of JVM(s). It has limitation in terms that it cannot relate these methods/requests to application at high level. While CAMM knows application components and models(like WebCenter, Spring Beans, Composites, OSB, Web Services etc.) and can relate data with it.
- On deploying ad4j agent, it starts showing real time data for a particular JVM like its real time thread system and memory system of a JVM. When ADP is deployed to a Oracle WebLogic domain, IBM WebSphere cell, or an Oracle SOA Suite cluster, it automatically discovers information about this particular domain including all deployed applications, configuration, resources, and others. ADP displays this information in the Monitoring tab under Oracle Enterprise Manager.
- Ad4j is a sampling tool. It samples the JVM metrics and monitors the JVM, gathers data and then predicts trends and analyzes data. ad4j does runtime Objects analysis. It uses two techniques for monitoring JVM, a. native diagnostic technique and b. JVMTI calls within JVM. While CAMM is a BCI(Byte Code based instrumentation) based tool. CAMM utilizes model-driven service management, a unique model-driven approach to application service management that automatically discovers and models the structure of J2EE and composite applications.
- When deployed in production, ad4j claims less than 1% overhead while CAMM claims around 5% overhead. CAMM is also very useful in development environment.
In 11g, both the solutions have been integrated and in future plan is to integrate them with other products in Oracle middleware stack