Hi Asankha,
From what I've seen, most of the performance problems with
Axis2/Rampart lay outside of WSS4J. Rampart could certainly do a better
job of optimizing its use of WSS4J - for example by not going through
the overhead of constructing an AXIOM DOM representation of the message
and passing that to WSS4J when the security configuration does not
require any processing on a particular message (such as for the response
message when only using UsernameToken) - but for cases where security
processing is actually needed, Rampart also does not appear to be the
cause of most of the added overhead.
I suspect the problems lie in the Axis2/AXIOM interaction, with
conversions between different forms of the message soaking up a lot of
time (and memory). One of these conversions, the building of an AXIOM
DOM representation, does show up as part of the Rampart timings, but I
suspect there are more conversions going on outside of Rampart once the
message body has to be parsed into a document model. The original Axis
has problems of this type, with repeated conversions between string and
DOM representations of a message which add a lot of overhead.
I'm only working with open source code in my articles, so your products
are not something I'd cover. If you want a better comparison for
WS-Security performance I suggest you try Metro to see how that compares
to your code.
- Dennis
Asankha C. Perera wrote:
Hi Dennis
I looked at WSS4j as a foundation for providing WS-Security support
for the UltraESB, <http://adroitlogic.org> and realized the fact that
its not really optimized for use on an ESB; in addition to a few more
issues I came across. Thus we developed a new library - which is
functionally similar to WSS4J, which performs over 3 X times or better
than WSS4J. However, currently it does not yet ship as a separate
library - although we may decide to do that if there is user interest
and demand.
Here is a comparison of it in use against WS-Security based on
WSS4J/Rampart
http://adroitlogic.org/samples-articles-and-tutorials/15-tutorials/48-esb-performance.html
cheers
asankha
Following up on some earlier discussions of Axis2/Rampart WS-Security
performance, devWorks has now published my latest article in the Java
Web Services series, comparing Axis2/Rampart with Metro WS-Security
performance: http://www.ibm.com/developerworks/java/library/j-jws11/
The results are very bad for Axis2/Rampart, with Metro more than
twice as fast overall in the WS-Security tests.
As mentioned in the article, some timing tests with
org.apache.rampart.TIME logging seemed to indicate that a lot of the
overhead is actually occurring outside the Rampart handler. I suspect
that Axis2 has fallen into the same performance pit as Axis in doing
conversions to and from different forms of the message.
If anyone is interested in investigating further, the full source
code for the performance comparison is available as a download from
the article.
- Dennis
--
Asankha C. Perera
AdroitLogic, http://adroitlogic.org
http://esbmagic.blogspot.com