axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Artigues" <aartig...@picturemarketing.com>
Subject RE: [Axis2] Deployment packaging
Date Thu, 01 Dec 2005 22:10:11 GMT
This post is in reply to the recent post by Tony Dean in regard to 
DeploymentClassLoader.

Tony is correct.  DeploymentClassLoader is not complete, and it has other 
issues:

#############################################################3
1) Resources inside of jars
Overriding findResource() will not work because the URL to the resource has a 
limitation in that it can only reference a resource nested 1 jar deep.  That 
means a URL formatted to reference a resource within a jar within the service 
archive will not work.

We had to override getResourceAsStream() in order to get resources out of jars 
correctly.


2) Unclosed file handles
We consistently ran out of memory when using Axis2 and traced it back to the 
getBytes() method in DeploymentClassLoader.   In the try/catch block of this 
method, the ZipInputStreams are being closed, but this happens only if the 
entry being searched for is actually found.  A second condition in which the 
stream will not get closed is if an exception gets thrown here.


3) DeploymentClassLoader is too slow
If your service contains many dependencies you will immediately notice how 
long it takes Axis2 to locate things.  We even made an attempt at exploding 
the archive as Tony suggested.  This did improve the speed of the class 
loading but it was still not acceptable.   Serious optimization is going to 
be needed here.  Our spring application context contains about 30 beans, most 
of which are DAO beans.  We have around 35 dependency jars in our service 
archive.  It takes us a whopping 10 minutes to load our application context, 
compared with about 30 seconds using Tomcat5's classloader.
###################################################################


We found these issues while trying to get Spring's HibernateDAOSupport 
functionality to work.  In addition to modifying Axis2's 
DeploymentClassLoader, we also had to make modifications to Spring because it 
lost focus of the Axis2 ClassLoader and instead reverted to the servlet 
container classloader (I realize this is something for the spring list but be 
warned if you try to do this).

We are working on submitting a patch and are in the process of finding a 
resolution to the performance issue.

Best regards,
--Alex & Ralf
aartigues@picturemarketing.com
rsantiago@picturemarketing.com


Mime
View raw message