Hello
I've noticed that some calls to axis in a project I'm working on seemed
really slow and I went to investigate.
relevant class:
org.apache.axis2.jaxws.description.impl.OperationDescriptionImpl
(as a reference I'm using [1], I somehow cannot find this class in [2]
:/ no offense meant)
During our call to axis, a new Object is created and we land there:
setSEIMethod() on line 205
-> calls registerMustUnderstandHeaders() on line 688
-> calls getAxisOperation() on line 2374 // important line #1
-> calls getSyncOperation on line 704
-> sets syncOperationDescription = this on line 984
now lines 1012-1014 are
if (log.isDebugEnabled()) {
log.debug("Synchronous operationDescription: " +
syncOperationDescription);
}
which calls toString on syncOperationDescription, which is this (because
of line 984)
in toString, there is line 2300 which is
string.append("Axis Operation: " + getAxisOperation()); // important line #2
So if we look at important line #1 and #2, we see the recursion. The
toString function also has a catch(Throwable t) around its whole code
which swallows any possible StackOverflowError that might be thrown.
This recursion only happens if there log.isDebugEnabled() == true.
-Hermi
[1]
http://grepcode.com/file/repo1.maven.org/maven2/org.apache.axis2/axis2-metadata/1.6.2/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java
[2] https://svn.apache.org/repos/asf/axis/axis2/java/core/trunk/
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]