diff --git a/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/configuration/Instance.java b/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/configuration/Instance.java
index bda9f4f..93f1f3d 100644
--- a/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/configuration/Instance.java
+++ b/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/configuration/Instance.java
@@ -86,6 +86,9 @@
     }
 
     public Instance named(String name) {
+        if (name == null || name.isEmpty()) {
+            throw new IllegalArgumentException("The instance name cannot be null or empty");
+        }
         this.name = name;
         return this;
     }
@@ -101,7 +104,7 @@
 
     public Instance nameIfUnnamed(String name) {
         if (this.name == null) {
-            this.name = name;
+            named(name);
         }
         return this;
     }
@@ -123,7 +126,7 @@
         }
     }
 
-    public static class FluentMap<K,T> extends LinkedHashMap<K, T> {
+    public static class FluentMap<K, T> extends LinkedHashMap<K, T> {
 
         public FluentMap() {
             super(new LinkedHashMap<K, T>());
@@ -163,10 +166,18 @@
         private T value;
 
         Property(String name) {
+            if (name == null || name.isEmpty()) {
+                throw new IllegalArgumentException("The property name cannot be null or empty");
+            }
             this.name = name;
         }
 
         public Instance setto(T value) {
+            if ("instance.name".endsWith(name)) {
+                if (value == null || value.toString().isEmpty()) {
+                    throw new IllegalArgumentException("The instance name cannot be null or empty");
+                }
+            }
             this.value = value;
             return Instance.this;
         }
diff --git a/ipojo/runtime/core/src/test/java/org/apache/felix/ipojo/configuration/InstanceDSLTest.java b/ipojo/runtime/core/src/test/java/org/apache/felix/ipojo/configuration/InstanceDSLTest.java
index 9fc2120..5d4c93e 100644
--- a/ipojo/runtime/core/src/test/java/org/apache/felix/ipojo/configuration/InstanceDSLTest.java
+++ b/ipojo/runtime/core/src/test/java/org/apache/felix/ipojo/configuration/InstanceDSLTest.java
@@ -52,4 +52,51 @@
         String cn = ConfigurationProcessor.getClassNameFromResource("/org/apache/felix/ipojo/Pojo.class");
         Assert.assertEquals(cn, "org.apache.felix.ipojo.Pojo");
     }
+
+    /**
+     * Test for FELIX-4490.
+     */
+    public void testInstanceNameNotNullOrEmpty() {
+        try {
+            instance().named(null);
+            Assert.fail("Exception expected");
+        } catch (IllegalArgumentException e) {
+            // OK
+        }
+
+        try {
+            instance().named("");
+            Assert.fail("Exception expected");
+        } catch (IllegalArgumentException e) {
+            // OK
+        }
+
+        try {
+            instance().nameIfUnnamed(null);
+            Assert.fail("Exception expected");
+        } catch (IllegalArgumentException e) {
+            // OK
+        }
+
+        try {
+            instance().nameIfUnnamed("");
+            Assert.fail("Exception expected");
+        } catch (IllegalArgumentException e) {
+            // OK
+        }
+
+        try {
+            instance().with("instance.name").setto(null);
+            Assert.fail("Exception expected");
+        } catch (IllegalArgumentException e) {
+            // OK
+        }
+
+        try {
+            instance().with("instance.name").setto("");
+            Assert.fail("Exception expected");
+        } catch (IllegalArgumentException e) {
+            // OK
+        }
+    }
 }
