For several releases now, OC4J (and the broader application server in general) have been utilizing some home grown technology to capture and publish runtime metrics, to present as runtime performance indicators.
The system we use is called DMS (Dynamic Monitoring System). DMS itself is a highly optimized framework for gathering and collating metrics. From the OC4J perspective, we've basically instrumented the J2EE container at all the interesting junction points to enable the runtime performance of the container to be measured. We've also instrumented various places where deployed applications are called, enabling data to be gathered on how a deployed application is operating on the container.
The full set of DMS stats that we (OC4J) gather and expose can be seen in the Oracle Application Server Performance Guide -- http://download-west.oracle.com/docs/cd/B31017_01/core.1013/b28942/metrics2.htm#sthref1086. Worth observing from this is that to we use the DMS stats where applicable, to automatically populate the JSR77 stats set. The data you see in a JSR77 stat is the same as what you'll see in the corresponding DMS stat.
One further interesting aspect of DMS is that we expose it as an API that application developers can use to instrument their own applications, and have the runtime gather the stats and present them as part of the standard interface/tools.
The chapter from the documentation that discussed how to instument applications is here -- http://download-west.oracle.com/docs/cd/B31017_01/core.1013/b28942/dms_app.htm#sthref671.
The Javadoc for the DMS API is located here -- http://download-west.oracle.com/docs/cd/B31017_01/core.1013/b28943/toc.htm
I have a semi-complete, simple example of using the DMS API to instrument an application. When I get a chance to complete it, I'll post it here as an example, along with a few screen shots showing the application stats as they appear in the monitoring applications.