Hi Axis2 community, I actually have a couple patches ready that can be used to
address this JIRA, but if possible would request a little direction/advise first.
The two patches are as described:
1. This patch is very small and contained in the
org.apache.axis2.deployment.util.Utils class. It essentially checks to determine
if the Context ClassLoader can be used in the getClassLoader method instead of
allocating a new URLClassLoader. This works great for this specific failing
scenario and as best as I can tell does not adversely impact other deployment
scenarios (e.g., hot deployment). It would be even better though if I could
determine if Axis2 is running in a container-managed environment (e.g., Geronimo)
but it's not obvious to me how to do so since the Constants.CONTAINER_MANAGED
variable is no longer set for the ConfigurationContext, as it was in previous
versions of Axis2. Would someone be able to recommend a tactic I can use to
determine this ??
2. The second patch essentially swaps the usage of URLClassLoader in the
org.apache.axis2.deployment.util.Utils.getClassLoader() method with a variant of
Geronimo's JarFileClassLoader, which extends the URLClassLoader to properly close
JarFiles when the classloader is destroyed so that the file read lock will be
released and the jar file can be modified or deleted. This also works great for
this specific failing scenario but the patch is much larger since new classes are
added for the JarFileClassLoader implementation plus the existing
MultiParentClassLoader in Axis2 is enhanced as well.
My plan is attached the first patch tomorrow and ask that it be reviewed since it
seems to me that it might be a viable solution with little risk, but my knowledge
of Axis2 is very limited. Does this seem like a reasonable approach ?? Thanks much.
Tim McConnell (JIRA) wrote:
URLClassloader locking jarfiles on Windows
-------------------------------------------
Key: AXIS2-4072
URL: https://issues.apache.org/jira/browse/AXIS2-4072
Project: Axis 2.0 (Axis2)
Issue Type: Bug
Affects Versions: 1.4.1
Environment: Windows XP, Geronimo 2.1.3
Reporter: Tim McConnell
There is at least one scenario using Axis2 and Geronimo that is causing
jarfiles to get locked on Windows such that a deployed WAR cannot be either
redeployed or uninstalled. Here is a brief description of the failing scenario:
1. A WAR file containing various jarfiles in the /lib directory is deployed on
Geronimo 2.1.3
2. Navigate to the deployed app's address to generate the WSDL for the web
service
3. Redeploy or uninstall of the WAR will now fail since all the jarfiles in the
WAR /lib directory are locked by Windows and cannot be deleted.
What appears to be happening is that there are three Axis2 URLClassLoaders in this scenario and at least two of them are creating their own ClassPath and URLClassPath$JarLoader objects that apparently are locking the jarfiles in the /lib directory.
--
Thanks,
Tim McConnell
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]