Hello,

We are tuning an aplication using Axis 1.2.1, Solaris 9 and Sun 
1.4.2_08 JVM.
The SOAP request uses SAAJ and a binary content of 300 kb is sended as 
attachment.

The binary content is flushed to disk in the class 
org.apache.axis.attachments.ManagedMemoryDataSource because the 
variable MAX_MEMORY_DISK_CACHED is only 16 KB.

We have found a lock problem in the 'flushToDisk' method 
ManagedMemoryDataSource.java:386). Only one threat is capable of 
execute the method 'java.io.File.createTempFile' at a time. The other 
threats are waiting to obtain the lock to write the attachment to disk.
This is a great problem for the performance of the application.

The solution used to solve this problem was to increase the 
MAX_MEMORY_DISK_CACHED parameter. This way the attachment is not cached 
to disk.

The parameter MAX_MEMORY_DISK_CACHED is a hard coded value. I found 
other mails in the list requesting to make MAX_MEMORY_DISK_CACHED a 
configurable property. We thought that this could be very useful for 
tuning applications.

Cheers,
Antonio GarcĂ­a

Reply via email to