diff --git a/engines/servicemix-camel/src/main/java/org/apache/servicemix/camel/JbiComponent.java b/engines/servicemix-camel/src/main/java/org/apache/servicemix/camel/JbiComponent.java
index f31661e..b0fba3f 100644
--- a/engines/servicemix-camel/src/main/java/org/apache/servicemix/camel/JbiComponent.java
+++ b/engines/servicemix-camel/src/main/java/org/apache/servicemix/camel/JbiComponent.java
@@ -16,14 +16,17 @@
  */
 package org.apache.servicemix.camel;
 
+import java.util.Map;
+
 import javax.xml.namespace.QName;
 
 import org.apache.camel.*;
+import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.processor.UnitOfWorkProcessor;
 import org.apache.servicemix.common.util.URIResolver;
 import org.apache.servicemix.id.IdGenerator;
 
-public class JbiComponent implements Component {
+public class JbiComponent extends DefaultComponent {
 
     private CamelComponent camelJbiComponent;
     private CamelContext camelContext;
@@ -169,4 +172,10 @@
         }
         return processor;
     }
+
+    @Override
+    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters)
+        throws Exception {
+        return createEndpoint(uri);
+    }
 }
diff --git a/engines/servicemix-camel/src/main/java/org/apache/servicemix/camel/osgi/OsgiJbiComponent.java b/engines/servicemix-camel/src/main/java/org/apache/servicemix/camel/osgi/OsgiJbiComponent.java
index 8695213..6d72946 100644
--- a/engines/servicemix-camel/src/main/java/org/apache/servicemix/camel/osgi/OsgiJbiComponent.java
+++ b/engines/servicemix-camel/src/main/java/org/apache/servicemix/camel/osgi/OsgiJbiComponent.java
@@ -21,18 +21,19 @@
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.framework.ServiceReference;
-import org.springframework.beans.factory.DisposableBean;
-import org.springframework.beans.factory.InitializingBean;
+
 
 /**
  * OSGi-specific servicemix-camel {@link JbiComponent} implementation that looks up the {@link CamelComponent} in the OSGi Service Registry
  */
-public class OsgiJbiComponent extends JbiComponent implements InitializingBean, DisposableBean {
+public class OsgiJbiComponent extends JbiComponent {
 
     private BundleContext bundleContext;
     private ServiceReference reference;
 
-    public void afterPropertiesSet() throws Exception {
+    @Override
+    public void start() throws Exception {
+        super.start();
         // get the servicemix-camel bundle's context
         bundleContext = FrameworkUtil.getBundle(OsgiJbiComponent.class).getBundleContext();
         
@@ -45,7 +46,9 @@
         setCamelJbiComponent(component);
     }
 
-    public void destroy() throws Exception {
+    @Override
+    public void stop() throws Exception {
+        super.stop();
         if (reference != null) {
             bundleContext.ungetService(reference);
         }
