-----Original Message-----
From: Qingxian Wang
Sent: 16 July 2002 17:55
To: '[EMAIL PROTECTED]'
Subject: InputStream and JarFile are not closed in getManifest()The getManifest() method of DeploymentInfo class in org.jboss.deployment package does not close FileInputStream and JarFile after creating or getting a Manifest object. This perhaps is the reason why JBoss cannot close JAR files when undeploying EAR or SAR files and therefore "Too many open files" problem is caused.The snipet of the JBoss (3.0.0) code is as follows:/**
* getManifest returns (if present) the deployment's manifest
* it is lazy loaded to work from the localURL
*/
public Manifest getManifest()
{
try
{
if (manifest == null)
{
File file = new File(localUrl.getFile());
if (file.isDirectory())
manifest= new Manifest(new FileInputStream(new File(file, "META-INF/MANIFEST.MF")));
else // a jar
manifest = new JarFile(file).getManifest();
}
return manifest;
}
// It is ok to barf at any time in the above, means no manifest
catch (Exception ignored) { return null;}
}The suggested changes are as below:public Manifest getManifest()
{
try
{
if (manifest == null)
{
File file = new File(localUrl.getFile());
if (file.isDirectory()) {
FileInputStream fis = null;
try {
fis = new FileInputStream(new File(file, "META-INF/MANIFEST.MF"));
manifest= new Manifest(fis);
} finally { // close the input stream
fis.close();
}
} else {// a jar
JarFile jarFile = new JarFile(file);
try {
manifest = jarFile.getManifest();
} finally { // close the JarFile
jarFile.close();
}
}
}
return manifest;
}
// It is ok to barf at any time in the above, means no manifest
catch (Exception ignored) { return null;}
}RegardsQingxian Wang
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.
