[388538] Jars with Main-class in MANIFEST located in lib dir are
deployed as App clients
[388557] EAR libraries classpath container is not calculating correctly
references with relative paths
[388551] Exported archive includes entries with absolute paths
[388970] NPE when modules of an EAR have no archive name in the
.component file
[388969] Inconsistent behaviour in legacy Application Deployment
Descriptor when modules are modified
[389007] Meta-files should not be considered module members
[389006] Inconsistency in ADD_TO_EAR property model
diff --git a/features/org.eclipse.jst.web_core.feature.patch/buildnotes_org.eclipse.jst.web_core.feature.patch.html b/features/org.eclipse.jst.web_core.feature.patch/buildnotes_org.eclipse.jst.web_core.feature.patch.html
index fd260b4..9d7e5a1 100644
--- a/features/org.eclipse.jst.web_core.feature.patch/buildnotes_org.eclipse.jst.web_core.feature.patch.html
+++ b/features/org.eclipse.jst.web_core.feature.patch/buildnotes_org.eclipse.jst.web_core.feature.patch.html
@@ -18,6 +18,12 @@
 <p>Bug <a href='https://bugs.eclipse.org/373402'>373402</a>. NPE in ClasspathDependencyUtil when classpath container returns null for entries</p>
 <p>Bug <a href='https://bugs.eclipse.org/376504'>376504</a>. Incorrect error message on RAR/App Client Jar Import Wizard</p>
 <p>Bug <a href='https://bugs.eclipse.org/378507'>378507</a>. NPE when exporting an EAR if one of the modules is out of synch</p>
-
+<p>Bug <a href='https://bugs.eclipse.org/388538'>388538</a>. Jars with Main-class in MANIFEST located in lib dir are deployed as App clients</p>
+<p>Bug <a href='https://bugs.eclipse.org/388557'>388557</a>. EAR libraries classpath container is not calculating correctly references with relative paths</p>
+<p>Bug <a href='https://bugs.eclipse.org/388551'>388551</a>. Exported archive includes entries with absolute paths</p>
+<p>Bug <a href='https://bugs.eclipse.org/388970'>388970</a>. NPE when modules of an EAR have no archive name in the .component file</p>
+<p>Bug <a href='https://bugs.eclipse.org/388969'>388969</a>. Inconsistent behaviour in legacy Application Deployment Descriptor when modules are modified</p>
+<p>Bug <a href='https://bugs.eclipse.org/389007'>389007</a>. Meta-files should not be considered module members</p>
+<p>Bug <a href='https://bugs.eclipse.org/389006'>389006</a>. Inconsistency in ADD_TO_EAR property model</p>
 </body>
 </html>
\ No newline at end of file
diff --git a/features/org.eclipse.jst.web_core.feature.patch/feature.properties b/features/org.eclipse.jst.web_core.feature.patch/feature.properties
index 62e331b..0ea37ae 100644
--- a/features/org.eclipse.jst.web_core.feature.patch/feature.properties
+++ b/features/org.eclipse.jst.web_core.feature.patch/feature.properties
@@ -32,6 +32,13 @@
 Bug https://bugs.eclipse.org/373402 NPE in ClasspathDependencyUtil when classpath container returns null for entries\n\
 Bug https://bugs.eclipse.org/376504 Incorrect error message on RAR/App Client Jar Import Wizard\n\
 Bug https://bugs.eclipse.org/378507 NPE when exporting an EAR if one of the modules is out of synch\n\
+Bug https://bugs.eclipse.org/388538 Jars with Main-class in MANIFEST located in lib dir are deployed as App clients\n\
+Bug https://bugs.eclipse.org/388557 EAR libraries classpath container is not calculating correctly references with relative paths\n\
+Bug https://bugs.eclipse.org/388551 Exported archive includes entries with absolute paths\n\
+Bug https://bugs.eclipse.org/388970 NPE when modules of an EAR have no archive name in the .component file\n\
+Bug https://bugs.eclipse.org/388969 Inconsistent behaviour in legacy Application Deployment Descriptor when modules are modified\n\
+Bug https://bugs.eclipse.org/389007 Meta-files should not be considered module members\n\
+Bug https://bugs.eclipse.org/389006 Inconsistency in ADD_TO_EAR property model\n\
 \n\
 # "copyright" property - text of the "Feature Update Copyright"
 copyright=\
diff --git a/plugins/org.eclipse.jst.common.frameworks/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.common.frameworks/META-INF/MANIFEST.MF
index 088ad9a..afd72e2 100644
--- a/plugins/org.eclipse.jst.common.frameworks/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.common.frameworks/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.common.frameworks; singleton:=true
-Bundle-Version: 1.1.502.qualifier
+Bundle-Version: 1.1.503.qualifier
 Bundle-Vendor: %pluginVendor
 Bundle-Localization: plugin
 Export-Package: 
diff --git a/plugins/org.eclipse.jst.common.frameworks/src/org/eclipse/jst/common/internal/modulecore/AddMappedOutputFoldersParticipant.java b/plugins/org.eclipse.jst.common.frameworks/src/org/eclipse/jst/common/internal/modulecore/AddMappedOutputFoldersParticipant.java
index bb614ad..1547691 100644
--- a/plugins/org.eclipse.jst.common.frameworks/src/org/eclipse/jst/common/internal/modulecore/AddMappedOutputFoldersParticipant.java
+++ b/plugins/org.eclipse.jst.common.frameworks/src/org/eclipse/jst/common/internal/modulecore/AddMappedOutputFoldersParticipant.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Red Hat and others.
+ * Copyright (c) 2009, 2012 Red Hat and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *     Red Hat - Initial API and implementation
+ *     Roberto Sanchez (IBM) - Use relative path for mapped output folders
  *******************************************************************************/
 package org.eclipse.jst.common.internal.modulecore;
 
@@ -78,7 +79,7 @@
 		while(i.hasNext()) {
 			IContainer next = i.next();
 			try {
-				new VirtualComponentFlattenUtility(list, this).addContainer(next, mapped.get(next));
+				new VirtualComponentFlattenUtility(list, this).addContainer(next, mapped.get(next).makeRelative());
 			} catch( CoreException ce) {}
 		}
 	}
diff --git a/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF
index 6eb3c3c..95430cc 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.504.qualifier
+Bundle-Version: 1.1.505.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/JavaEEArchiveUtilities.java b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/JavaEEArchiveUtilities.java
index 9b79c05..f479b8c 100644
--- a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/JavaEEArchiveUtilities.java
+++ b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/JavaEEArchiveUtilities.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
+ * Copyright (c) 2005, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -566,7 +566,7 @@
 				wrapArchive(simpleArchive, new Path(J2EEConstants.WEBAPP_DD_URI));
 				return simpleArchive;
 			} else if (lastSegment.endsWith(IJ2EEModuleConstants.JAR_EXT)) {
-				String libPath = null == archivePath ? null : archivePath.removeLastSegments(1).toPortableString();
+				String libPath = null == archivePath ? null : archivePath.removeLastSegments(1).lastSegment();
 				// Do not look for main class in manifest.mf if jar is on lib directory of EAR 5 or above
 				boolean skipDiscriminateMainClass = isNestedWithinEar5OrAbove && earLibDirectory!= null && earLibDirectory.equals(libPath);
 				Object discriminateMainClass = simpleArchive.getArchiveOptions().getOption(DISCRIMINATE_MAIN_CLASS);
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathContainer.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathContainer.java
index 803e874..5e60d04 100644
--- a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathContainer.java
+++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathContainer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
+ * Copyright (c) 2003, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -441,7 +441,7 @@
 									// check if the referenced component is in the library directory
 									IPath runtimePath = earRef.getRuntimePath().makeRelative();
 									boolean isInLibDir = libDirPath.equals(runtimePath);
-									if(!isInLibDir){
+									if(!isInLibDir && earRef.getArchiveName() != null){
 										IPath fullPath = earRef.getRuntimePath().append(earRef.getArchiveName());
 										isInLibDir = fullPath.removeLastSegments(1).makeRelative().equals(libDirPath);
 									}
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/AddComponentToEnterpriseApplicationOp.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/AddComponentToEnterpriseApplicationOp.java
index f979a48..0b141e3 100644
--- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/AddComponentToEnterpriseApplicationOp.java
+++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/AddComponentToEnterpriseApplicationOp.java
@@ -35,6 +35,7 @@
 import org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualArchiveComponent;
 import org.eclipse.jst.j2ee.componentcore.util.EARVirtualComponent;
 import org.eclipse.jst.j2ee.internal.ICommonEMFModule;
+import org.eclipse.jst.j2ee.internal.J2EEConstants;
 import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
 import org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathUpdater;
 import org.eclipse.jst.j2ee.internal.componentcore.JavaEEBinaryComponentHelper;
@@ -58,6 +59,8 @@
 import org.eclipse.wst.common.componentcore.internal.operation.CreateReferenceComponentsOp;
 import org.eclipse.wst.common.componentcore.internal.util.ComponentUtilities;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFile;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
 import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 import org.eclipse.wst.common.internal.emf.resource.CompatibilityXMIResource;
@@ -135,6 +138,15 @@
 							try {
 								compse = StructureEdit.getStructureEditForWrite(wc.getProject());
 								final ReferencedComponent ref = findReferencedComponent(earwc, wc, se, compse);
+								
+								// Determine if the EAR project has deployment descriptor, if so, then force save.
+								IPath saveFlag = null;
+								IVirtualFolder rootFolder = ear.getRootFolder();
+								IPath path = new Path(J2EEConstants.APPLICATION_DD_URI);
+								IVirtualFile vFile = rootFolder.getFile(path);
+								if(vFile.exists())
+									saveFlag = IModelProvider.FORCESAVE;
+								
 								earModel.modify(new Runnable() {
 									public void run() {
 										final ICommonApplication application = (ICommonApplication)earModel.getModelObject();
@@ -174,7 +186,7 @@
 											}
 										}
 									}						
-								}, null);
+								}, saveFlag);
 							} finally {
 								if (compse != null) {
 									compse.saveIfNecessary(monitor);
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/RemoveComponentFromEnterpriseApplicationOperation.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/RemoveComponentFromEnterpriseApplicationOperation.java
index 798b2b5..dd5df7c 100644
--- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/RemoveComponentFromEnterpriseApplicationOperation.java
+++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/RemoveComponentFromEnterpriseApplicationOperation.java
@@ -16,12 +16,15 @@
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Path;
+import org.eclipse.jst.j2ee.internal.J2EEConstants;
 import org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathUpdater;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
 import org.eclipse.jst.j2ee.model.IEARModelProvider;
+import org.eclipse.jst.j2ee.model.IModelProvider;
 import org.eclipse.jst.j2ee.model.ModelProviderManager;
 import org.eclipse.jst.javaee.application.Application;
 import org.eclipse.jst.javaee.application.Module;
@@ -35,6 +38,7 @@
 import org.eclipse.wst.common.componentcore.internal.operation.RemoveReferenceComponentOperation;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.common.componentcore.resources.IVirtualFile;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 
 public class RemoveComponentFromEnterpriseApplicationOperation extends RemoveReferenceComponentOperation {
@@ -62,6 +66,7 @@
 			return;
 		J2EEComponentClasspathUpdater.getInstance().queueUpdateEAR(comp.getProject());
 		final IEARModelProvider earModel = (IEARModelProvider)ModelProviderManager.getModelProvider(comp.getProject());
+		final IVirtualComponent ear = (IVirtualComponent) this.model.getProperty(ICreateReferenceComponentsDataModelProperties.SOURCE_COMPONENT);
 		StructureEdit se = null;
 		try {
 			se = StructureEdit.getStructureEditForWrite(comp.getProject());
@@ -75,6 +80,15 @@
 						compse = StructureEdit.getStructureEditForWrite(wc.getProject());
 						if(compse != null) {
 							final ReferencedComponent ref = AddComponentToEnterpriseApplicationOp.findReferencedComponent(earwc, wc, se, compse);
+							
+							// Determine if the EAR project has deployment descriptor, if so, then force save.
+							IPath saveFlag = null;
+							IVirtualFolder rootFolder = ear.getRootFolder();
+							IPath path = new Path(J2EEConstants.APPLICATION_DD_URI);
+							IVirtualFile vFile = rootFolder.getFile(path);
+							if(vFile.exists())
+								saveFlag = IModelProvider.FORCESAVE;
+							
 							earModel.modify(new Runnable() {
 								public void run() {
 									ICommonApplication application = (ICommonApplication)earModel.getModelObject();
@@ -133,7 +147,7 @@
 										}
 									}	
 								}
-							}, null);
+							}, saveFlag);
 						} else {
 							earModel.modify(new Runnable() {
 								public void run() {
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.java
index 2541924..b69a05a 100644
--- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.java
+++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/componentcore/util/EARArtifactEdit.java
@@ -687,8 +687,13 @@
 		try {
 			runnable.run();
 			if( getWritableEdit() != null ){
-				// Always save regardless of resource path passed - Artifactedits save resources as a unit
-				getWritableEdit().saveIfNecessary( new NullProgressMonitor() );
+				
+				if(modelPath != null && modelPath.equals(IModelProvider.FORCESAVE)){
+					getWritableEdit().save( new NullProgressMonitor() );
+				}else{
+					// Always save regardless of resource path passed - Artifactedits save resources as a unit
+					getWritableEdit().saveIfNecessary( new NullProgressMonitor() );
+				}
 			}
 			
 		} finally {
diff --git a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/componentcore/J2EEModuleVirtualComponent.java b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/componentcore/J2EEModuleVirtualComponent.java
index 1c95720..cd988d6 100644
--- a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/componentcore/J2EEModuleVirtualComponent.java
+++ b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/componentcore/J2EEModuleVirtualComponent.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2011 IBM Corporation and others.
+ * Copyright (c) 2003, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -421,7 +421,8 @@
 			if (tempEarRefs[j].getReferencedComponent().equals(moduleComponent)) {
 				earRefs = tempEarRefs;
 				foundRef = tempEarRefs[j];
-				earArchiveURI = foundRef.getArchiveName();
+				earArchiveURI = foundRef.getRuntimePath() == null?foundRef.getArchiveName():
+					foundRef.getRuntimePath().append(foundRef.getArchiveName()).makeRelative().toString();				
 				simplePath = earArchiveURI != null ? earArchiveURI
 						.lastIndexOf("/") == -1 : true; //$NON-NLS-1$
 			}
diff --git a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/facet/J2EEFacetProjectCreationDataModelProvider.java b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/facet/J2EEFacetProjectCreationDataModelProvider.java
index 1049ca2..3ffc495 100644
--- a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/facet/J2EEFacetProjectCreationDataModelProvider.java
+++ b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/facet/J2EEFacetProjectCreationDataModelProvider.java
@@ -23,6 +23,7 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
+import org.eclipse.jst.j2ee.internal.plugin.J2EEPreferences;
 import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
 import org.eclipse.wst.common.componentcore.datamodel.FacetProjectCreationDataModelProvider;
 import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties;
@@ -66,6 +67,8 @@
 			IDataModel nestedJ2EEFacetDataModel = getJ2EEFacetModel();
 			if (nestedJ2EEFacetDataModel!=null)
 				return nestedJ2EEFacetDataModel.getProperty(IJ2EEModuleFacetInstallDataModelProperties.EAR_PROJECT_NAME);
+		}else if (propertyName.equals(ADD_TO_EAR)) {
+			return new Boolean( J2EEPlugin.getDefault().getJ2EEPreferences().getBoolean(J2EEPreferences.Keys.ADD_TO_EAR_BY_DEFAULT));
 		}
 		return super.getDefaultProperty(propertyName);
 	}
diff --git a/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/deployables/J2EEFlexProjDeployable.java b/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/deployables/J2EEFlexProjDeployable.java
index 89393a4..aaa0bb8 100644
--- a/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/deployables/J2EEFlexProjDeployable.java
+++ b/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/deployables/J2EEFlexProjDeployable.java
@@ -12,11 +12,14 @@
 
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Properties;
+import java.util.Set;
 
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
@@ -38,6 +41,7 @@
 import org.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyEnablement;
 import org.eclipse.jst.j2ee.internal.common.exportmodel.JEEHeirarchyExportParticipant;
 import org.eclipse.jst.j2ee.internal.common.exportmodel.JavaEESingleRootCallback;
+import org.eclipse.jst.j2ee.internal.plugin.IJ2EEModuleConstants;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
 import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
 import org.eclipse.jst.server.core.IApplicationClientModule;
@@ -55,6 +59,7 @@
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
 import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.model.IModuleResource;
 import org.eclipse.wst.server.core.model.ModuleDelegate;
 import org.eclipse.wst.web.internal.deployables.FlatComponentDeployable;
 
@@ -65,6 +70,8 @@
 				IEnterpriseApplication, IApplicationClientModule, 
 				IConnectorModule, IEJBModule, IWebModule, IUtilityModule, IWebFragmentModule {
 	 
+	private Set<String> metaResources = null;
+	
 	/**
 	 * Constructor for J2EEFlexProjDeployable.
 	 * 
@@ -73,6 +80,7 @@
 	 */
 	public J2EEFlexProjDeployable(IProject project, IVirtualComponent aComponent) {
 		super(project, aComponent);
+		declareMetadataResources();
 	}
 	
 	/**
@@ -251,4 +259,38 @@
 		}
         return paths.toArray(new IPath[paths.size()]);
     }
+    
+    /**
+     * Retrieves the module members. The meta resources of project
+     * are filtered.
+     */
+    @Override
+
+    public IModuleResource[] members() throws CoreException {
+    	List<IModuleResource> moduleResources = new ArrayList<IModuleResource>();
+    	IModuleResource[] resources = super.members();
+
+
+    	for(IModuleResource res : resources)
+
+    		if(!metaResources.contains(res.getName()))
+    			moduleResources.add(res);
+
+
+    	return moduleResources.toArray(new IModuleResource[moduleResources.size()]);
+    }
+
+
+    /**
+     * This method declares the .project and .settings paths as 
+     * meta resources, so they can be filtered from the members.
+     * 
+     */
+
+    private void declareMetadataResources() {
+
+    	metaResources = new HashSet<String>();
+    	metaResources.add(IJ2EEModuleConstants.META_PROJECT_PATH);			
+
+    }
 }
diff --git a/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/plugin/IJ2EEModuleConstants.java b/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/plugin/IJ2EEModuleConstants.java
index 28a0a96..f64eeb7 100644
--- a/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/plugin/IJ2EEModuleConstants.java
+++ b/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/plugin/IJ2EEModuleConstants.java
@@ -29,4 +29,6 @@
 	public static final String JST_WEB_TEMPLATE = "template.jst.web"; //$NON-NLS-1$
 	public static final String WST_WEB_TEMPLATE = "template.wst.web"; //$NON-NLS-1$
 	public static final String JST_COMPONENT_FILE = "org.eclipse.wst.common.component";//$NON-NLS-1$
+	
+	public static final String META_PROJECT_PATH = ".project";//$NON-NLS-1$
 }