JAMon 2.71 is a minor release that adds a few features that users requested after version 2.7 (Thanks for patiently waiting!).
JAMon still requires JDK 1.4 or higher (with a couple exceptions referenced below). If version 2.7 is working for you and you don't want the features below then this is not a required upgrade.
To use 2.71 you must install the new jar (jamon-2.71.jar), and if you are using using JAMon war to view the JAMon stats then you must also install the new war.
The following is a list of changes in this version:
- ConcurrentHashMap - The ConcurrentHashMap is now automatically used by JAMon to store statistics if you are using jdk 1.5 or higher. This improves concurrency.
- Monitor skip() method added - Sometimes a monitor is started however you don't want to add the times to the JAMon stats (for example if an exception is thrown). The
new skip() method will decrement the active counter however it will not add the stats to JAMon.
- Monitor getLabel() method added - The Monitor class now has a getLabel() method that gets the JAMon summary label.
- Monitor getValue(String key) method added - The Monitor class now has a getValue(String key) method that gets the value of any data the monitor holds. This method
was added to support a request to get the start time for a given monitor. I didn't add a getStartTime() method as all monitors don't support this functionality. getValue(key) is
more flexible. To get start time you call it like this: monitor.getValue("starttime"). It also accepts other values such as "min", "max" that are monitor type dependent.
- Reduced JAMon memory footprint by using lazy initialization for JAMon listeners - Note this was a breaking change if you call monitor.getListenerType(...) method explicitly in your code.
You will have to replace this code with these new Monitor methods:
- public void addListener(String listenerTypeName, JAMonListener listener);
- public boolean hasListener(String listenerTypeName, String listenerName);
- public void removeListener(String listenerTypeName, String listenerName);
- Interface monitoring allows you to provide your own label - Users wanted more control over the JAMon labels that are created with interface monitoring. The MonProxyFactory and JDBCMonProxy
classes now allow a developer to supply their own MonProxyLabelerInt (interface) which has methods that are called when a method is invoked (getSummaryLabe(...)) and
when the method throws an exception (getExceptionLabel(...)).
- Fixed problem where activity in ranges was being misreported
- Fixed problem with buffer listener headers not matching their data
- Fixed problem with viewing exception stack traces - Stack traces were not always showing up properly in the JAMon listener pages (allows you to view stack traces via the JAMon war. Sort of like unix tail)
Two classes in this release require JDK 1.5 or higher. The JAMonEJBInterceptor (for EJB monitoring),
and the JAMonDataSource (note the JDBC proxy driver works with JDK 1.4 or higher still). Note this is the last release that will support JDK 1.4. The next release will be JDK 1.5 or higher.
Post any other requests you might have on the JAMon support forum. Better yet contribute code or your time to JAMon!! Cheers.