[313399] Opener of Archive didn't close a file
diff --git a/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF
index d83f096..5dc6dc4 100644
--- a/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.jst.j2ee; singleton:=true
-Bundle-Version: 1.1.213.qualifier
+Bundle-Version: 1.1.214.qualifier
 Bundle-Activator: org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin
 Bundle-Vendor: %Bundle-Vendor.0
 Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/EARComponentLoadStrategyImpl.java b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/EARComponentLoadStrategyImpl.java
index caf6426..e9cb745 100644
--- a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/EARComponentLoadStrategyImpl.java
+++ b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/EARComponentLoadStrategyImpl.java
@@ -121,19 +121,25 @@
 							componentArtifactEdit = ArtifactEditRegistryReader.instance().getArtifactEdit(J2EEProjectUtilities.JCA).createArtifactEditForRead(referencedComponent);
 						}
 						if (null != componentArtifactEdit) {
-							Archive archive = ((EnterpriseArtifactEdit) componentArtifactEdit).asArchive(exportSource, includeClasspathComponents);
-							if (referencedComponent.isBinary()) {
-								artifactEditsToDispose.add(componentArtifactEdit);
-								archive.setLoadingContainer(getContainer());
-								binaryComponentURIsToDiskFileMap.put(archive.getOriginalURI(), diskFile);
+							Archive archive = null;
+							try {
+								archive = ((EnterpriseArtifactEdit) componentArtifactEdit).asArchive(exportSource, includeClasspathComponents);
+								if (referencedComponent.isBinary()) {
+									artifactEditsToDispose.add(componentArtifactEdit);
+									archive.setLoadingContainer(getContainer());
+									binaryComponentURIsToDiskFileMap.put(archive.getOriginalURI(), diskFile);
+								}
+								archive.setURI(earArtifactEdit.getModuleURI(referencedComponent));
+								filesHolder.addFile(archive);
+								isModule = true;
+								if (addClasspathComponentDependencies) {
+									addClasspathComponentDependencies(referencedComponent);
+								}
+							} finally {
+								if(archive != null){
+									archivesToClose.add(archive);
+								}
 							}
-							archive.setURI(earArtifactEdit.getModuleURI(referencedComponent));
-							filesHolder.addFile(archive);
-							isModule = true;
-							if (addClasspathComponentDependencies) {
-								addClasspathComponentDependencies(referencedComponent);
-							}
-							archivesToClose.add(archive);
 						}
 					} catch (OpenFailureException oe) {
 						J2EEPlugin.logError(oe);