diff --git a/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java b/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
index 1212e81..9be2a44 100644
--- a/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
+++ b/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
@@ -899,9 +899,9 @@
         }
     }
 
-    public Set<Feature> getFeaturesContainingBundle (Bundle bundle) {
+    public Set<Feature> getFeaturesContainingBundle (Bundle bundle) throws Exception {
         Set<Feature> features = new HashSet<Feature>();
-        for (Map<String, Feature> featureMap : this.features.values()) {
+        for (Map<String, Feature> featureMap : this.getFeatures().values()) {
             for (Feature f : featureMap.values()) {
                 if (f.getBundles().contains(bundle.getLocation())) {
                     features.add(f);
@@ -911,7 +911,7 @@
         return features;
     }
 
-    private String getFeaturesContainingBundleList(Bundle bundle) {
+    private String getFeaturesContainingBundleList(Bundle bundle) throws Exception {
         Set<Feature> features = getFeaturesContainingBundle(bundle);
         StringBuilder buffer = new StringBuilder();
         Iterator<Feature> iter = features.iterator();
