Oracle IAS/OC4J

How To

 

This page describes how to instrument an Oracle IAS a.k.a. OC4J application server with Zapcat. This is not spectacularly different from how you would do it in other application servers, but you may find it useful to have a step-by-step guide.


The Oracle application server goes under many names, and you may well know it under a different name than what Oracle calls it today. It started its life as IronFlare’s Orion application server. Oracle then licensed that server and called it OC4J. Depending on who you talk to, they will call it OC4J or Oracle IAS.


Before You Begin

In this tutorial, I presume that you have both Zabbix and OC4J up and running.




This tutorial was written for the standalone version of OC4J. For enterprise or clustered versions of OC4J you may find small differences between your installation and these screen shots.


Enabling JMX

First, we have to enable JMX in the JVM that runs the OC4J application server. We do this with the Java system property “com.sun.management.jmxremote”.


Here is how you would manually start OC4J. You probably won’t start OC4J by hand, so you will have to edit the start script to do the same.

% OC4J_JVM_ARGS="${OC4J_JVM_ARGS} -Dcom.sun.management.jmxremote"

% export OC4J_JVM_ARGS

% bin/oc4j -start

Starting OC4J from /Users/kjkoster/jdevhome/oc4j_extended_101330/j2ee/home ...


This enables JMX on the application server’s JVM. You can test it by starting jconsole on the same machine as the JVM. Jconsole will pick up on the instrumented JVM automatically. Here is what jconsole’s startup screen looks like when you have enabled JMX properly on the application server.


When you connect, you can get a feel for the types of metrics that OC4J exposes through JMX. There is certainly a lot of information. The trick is to know what is interesting, of course.


Deploying Zapcat

You are now ready to enable the Zapcat agent in your application server, to form the bridge with Zabbix. The simplest way to instrument OC4J with Zapcat is to deploy Zapcat’s web application.


Using a web browser, open the management console of you application server and open the tab named “Applications”. To deploy a new web application, click the button marked “deploy”.


Use the file picker to select Zapcat’s WAR archive from Zapcat’s distribution archive. Press “Next” to upload the file to your application server.


Next, you have to name the application. I used the name “zapcat”, but you are free to pick any name that does not conflict with your existing web applications.


The context root is the first part of the URL that Zapcat will be visible under when you use a web browser to connect to the application server, for example to explore the mbeans.


There seems to be an issue that when you redeploy an application, the pick list marked “Bind Web Module to Site” is blank. Check that this is set to “default-web-site”. Finally, press “Next” to proceed to the final step.


All that is left to do is to confirm the deployment. Press “Deploy” to finalise deployment and activate the application.


When all is well, you get the message shown below.


Now enter the address “http://localhost:8888/zapcat-1.2/” to see that Zapcat is indeed deployed properly.


If Zapcat does not seem to start, check you log files. If you get the error message shown below, you have not enabled JMX in the application server. Check your start script, restart OC4J and test with jconsole.

Starting OC4J from /Users/kjkoster/jdevhome/oc4j_extended_101330/j2ee/home ...

Oracle Containers for J2EE 10g (10.1.3.3.0)  initialized

Exception in thread "Zabbix-agent" java.lang.ExceptionInInitializerError

at org.kjkoster.zapcat.zabbix.ZabbixAgent.run(ZabbixAgent.java:163)

at java.lang.Thread.run(Thread.java:613)

Caused by: oracle.oc4j.admin.jmx.shared.exceptions.JMXRuntimeException: Cannot access application specific MBeanServer proxy. ContextContainer is null

at oracle.oc4j.admin.jmx.server.Oc4jMBeanServerFactory.getUserMBeanServer(Oc4jMBeanServerFactory.java:220)

at oracle.oc4j.admin.jmx.server.Oc4jMBeanServerBuilder.newMBeanServer(Oc4jMBeanServerBuilder.java:87)

at javax.management.MBeanServerFactory.newMBeanServer(MBeanServerFactory.java:316)

at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:219)

at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:180)

at sun.management.ManagementFactory.createPlatformMBeanServer(ManagementFactory.java:264)

at java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:512)

at org.kjkoster.zapcat.zabbix.JMXHelper.<clinit>(JMXHelper.java:37)

... 2 more


OC4J MBeans

Fortunately, the developers of OC4J have taken the time to instrument all the components of your application server with JMX mbeans. Unfortunately I have no template for the Oracle application servers. I also have not written a host definition generator, like I have for Tomcat. From here on, I am afraid that you are on uncharted territory.


If you use Zapcat to monitor your OC4J container, I would love to hear from you. You would do me a great favour by sending me your host definition as an export from Zabbix. That would allow me to write a template for this type of JEE container. Hopefully, others will contribute their host definitions and we can work together to create a template for Oracle IAS.

 
photo: Edwin Bakkerhttp://www.sxc.hu/profile/Ed16
if you find this interesting, terrible or just would like to know more, e-mail memailto:kjkoster@kjkoster.org?subject=
web statistics
download zapcathttp://sourceforge.net/project/showfiles.php?group_id=209024
http://java-monitor.com/