We observed big performance degradation when we upgraded our Axis services to Axis2. This was bit socking because Axis2 is re-architected from Axis and supposed to be faster and better alternative than classic Axis.
After extensive debugging efforts we found that code form 'annogen-0.1.0.jar' was spending a lots of time in detecting JDK1.5 presence. We fixed the issue by modifying following methods to avoid same detection repetitively and now our services flies (2 to 3 times faster).
org.codehaus.jam.internal.TigerDelegate. isTigerJavadocAvailable (JamLogger logger)
org.codehaus.jam.internal.TigerDelegate.isTigerReflectionAvailable(JamLogger logger)
Hope this helps someone who is facing similar problem.
Thanks,
Sudhaker
[Code Fix]
private static boolean tigerReflectionAvailable = false;
private static boolean tigerJavadocAvailable = false;
private static boolean tigerReflectionCheckDone = false;
private static boolean tigerJavadocCheckDone = false;
protected static boolean isTigerJavadocAvailable(JamLogger logger) {
if (! tigerJavadocCheckDone)
try {
tigerJavadocCheckDone = true;
// class for name this because it's 1.5 specific. if it fails, we
// don't want to use the extractor
Class.forName(SOME_TIGER_SPECIFIC_JAVADOC_CLASS);
tigerJavadocAvailable = true;
return true;
} catch (ClassNotFoundException e) {
issue14RuntimeWarning(e,logger);
}
return tigerJavadocAvailable;
}
/*
* This method was causing huge performance impact in our WAS5.1 environment so JDK1.5
* detection is bypassed. We can remove this class when we move to JDK1.5 :-)
*/
protected static boolean isTigerReflectionAvailable(JamLogger logger) {
if (! tigerReflectionCheckDone)
try {
tigerReflectionCheckDone = true;
// class for name this because it's 1.5 specific. if it fails, we
// don't want to use the extractor
Class.forName(SOME_TIGER_SPECIFIC_REFLECT_CLASS);
tigerReflectionAvailable = true;
return true;
} catch (ClassNotFoundException e) {
issue14RuntimeWarning(e,logger);
}
return tigerReflectionAvailable;
}