diff --git a/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/jaxb/compiler/AnnotationsProcessor.java b/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/jaxb/compiler/AnnotationsProcessor.java
index ff46127..a892b64 100644
--- a/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/jaxb/compiler/AnnotationsProcessor.java
+++ b/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/jaxb/compiler/AnnotationsProcessor.java
@@ -2196,6 +2196,9 @@
                     XmlElementDecl elementDecl = (XmlElementDecl) helper.getAnnotation(next, XmlElementDecl.class);
                     String url = elementDecl.namespace();
                     Class scopeClass = elementDecl.scope(); 
+                    if(XMLConstants.EMPTY_STRING.equals(url)) {
+                        isDefaultNamespaceAllowed = false;
+                    }
                     if ("##default".equals(url)) {
                         url = namespaceInfo.getNamespace();
                     }
diff --git a/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/jaxb/compiler/MappingsGenerator.java b/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/jaxb/compiler/MappingsGenerator.java
index 5288786..668a896 100644
--- a/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/jaxb/compiler/MappingsGenerator.java
+++ b/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/jaxb/compiler/MappingsGenerator.java
@@ -229,20 +229,22 @@
         }
         
         JavaClass manyValueJavaClass = helper.getJavaClass(ManyValue.class);
-        if(!manyValueJavaClass.isAssignableFrom(javaClass)){
-        if (rootElem == null) {
-            descriptor.setDefaultRootElement("");
-        } else {
-            if (namespace.length() == 0) {
-                descriptor.setDefaultRootElement(elementName);
+        if (!manyValueJavaClass.isAssignableFrom(javaClass)){
+            if(namespace.length() != 0) {
+                if(isDefaultNamespaceAllowed && globalNamespaceResolver.getDefaultNamespaceURI() == null && namespace.length() != 0) {
+                    globalNamespaceResolver.setDefaultNamespaceURI(namespace);
+                    namespaceInfo.getNamespaceResolverForDescriptor().setDefaultNamespaceURI(namespace);
+                }
+            }
+            if (rootElem == null) {
+                descriptor.setDefaultRootElement("");
             } else {
-            	if(isDefaultNamespaceAllowed && globalNamespaceResolver.getDefaultNamespaceURI() == null){
-            		globalNamespaceResolver.setDefaultNamespaceURI(namespace);
-            	    namespaceInfo.getNamespaceResolverForDescriptor().setDefaultNamespaceURI(namespace);
-            	}
-                descriptor.setDefaultRootElement(getQualifiedString(getPrefixForNamespace(namespace, namespaceInfo.getNamespaceResolverForDescriptor(), null), elementName));
-	        }
-        }
+                if (namespace.length() == 0) {
+                    descriptor.setDefaultRootElement(elementName);
+                } else {
+                    descriptor.setDefaultRootElement(getQualifiedString(getPrefixForNamespace(namespace, namespaceInfo.getNamespaceResolverForDescriptor(), null), elementName));
+    	        }
+            }
         }
         
         descriptor.setNamespaceResolver(namespaceInfo.getNamespaceResolverForDescriptor());
