santuario-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chefo <che...@gmail.com>
Subject IdResolver Java API extension
Date Fri, 17 Sep 2010 13:08:21 GMT
Hi guys,

I would like to suggest a tiny extension to the xmlsec java API, namely to
add a static method like unregisterDocument to
org.apache.xml.security.utils.IdResolver to remove adocument from the static
"docMap" WeakHashMap.
The reason behind this is the following: I'm using apache axis2 web service
implementation with its security module that uses wss4j and respectively
xmlsec. When set under stress (800+ signed SOAP transactions) after certain
period of time (5 - 10 minutes) the system hangs and all working threads are
in the following state:

"HTTP Handler 10.20.32.55" Id=185 in RUNNABLE
 at java.util.WeakHashMap.get(WeakHashMap.java:355)
 at org.apache.xml.security.utils.IdResolver.registerElementById(Unknown
Source)
 at org.apache.xml.security.signature.XMLSignature.setId(Unknown Source)
 at
org.apache.ws.security.message.WSSecSignature.prepare(WSSecSignature.java:360)
 at
org.apache.rampart.builder.BindingBuilder.getSignatureBuider(BindingBuilder.java:387)
 at
org.apache.rampart.builder.AsymmetricBindingBuilder.doSignature(AsymmetricBindingBuilder.java:716)
 at
org.apache.rampart.builder.AsymmetricBindingBuilder.doSignBeforeEncrypt(AsymmetricBindingBuilder.java:433)
 at
org.apache.rampart.builder.AsymmetricBindingBuilder.build(AsymmetricBindingBuilder.java:95)
 at org.apache.rampart.MessageBuilder.build(MessageBuilder.java:147)
 at org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:79)
 at org.apache.axis2.engine.Phase.invoke(Phase.java:325)
 at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:264)
 at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:429)
...

100% cpu utilization, almost nothing processed. Sometimes the system
recovers a bit and than hangs again. The issue is observed on java 6 only.
My wild guess is that the static weak hash map is filled faster than the gc
is cleaning it. I guess there is some way to tweak the gc in java 6 and get
over this but a simple method to remove registered dom document from the map
after the processing has finished does the job neatly.

I will submit a patch if you agree with the proposed extension.

Thanks in advance,
Chefo

Mime
View raw message