|
The
problem seems more complicated than I thought initially. The suggested fix
alone does not solve the problem. I also found input or output streams are
not closed in more places spread in different packages.
One of
the causes of the problem, I think, is the way how the deployers
work. When an application is deployed, JAR files are opened by creating
new JarFile objects to peek the info of the JAR file. For example, in the
accept() method of the JARDeployer class, JarFile object is created to check if
the JAR file contains META-INF or *.xml file or not. But, the JarFile objects
never closes because they are returned by JarURLConnection objects and it
closing the JarFile could cause the close of the application archive file
and therefore will break the deployment. Hence, the files are left
open. However, when the application is undeployed, there is no way to
check if the file is open or not in the deployer system and the opened files
never get closed. I think this is the reason why the temp files and directories
cannot be deleted during undeploying an application. And, it is also the
reason why repeated deploy and undeploy eventually causes "Too many open files"
problem.
Some
non-trivial work might need to sort this out.
Please
let me know if I am correct or not.
Regards
Qingxian
This e-mail and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom it is addressed. If you have received this e-mail in error you must not copy, distribute or take any action in reliance on it. Please notify the sender by e-mail or telephone. We utilise an anti-virus system and therefore any files sent via e-mail will have been checked for known viruses. You are however advised to run your own virus check before opening any attachments received as we will not in any event accept any liability whatsoever once an e-mail and/or any attachment is received. Any views expressed by an individual within this e-mail do not necessarily reflect the views of Systems Union Group plc or any of its subsidiary companies. |
