diff --git a/scr/src/main/java/org/apache/felix/scr/impl/helper/BaseMethod.java b/scr/src/main/java/org/apache/felix/scr/impl/helper/BaseMethod.java
index 6d9ee8c..1f11aad 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/helper/BaseMethod.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/helper/BaseMethod.java
@@ -221,23 +221,23 @@
     private MethodResult invokeMethod( final Object componentInstance, final Object rawParameter, SimpleLogger logger )
         throws InvocationTargetException
     {
-        logger.log( LogService.LOG_DEBUG, "invoking {0}: {1}", new Object[]
-            { getMethodNamePrefix(), getMethodName() }, null );
         try
         {
             if ( componentInstance != null )
             {
                 final Object[] params = getParameters(m_method, rawParameter);
+                logger.log( LogService.LOG_DEBUG, "invoking {0}: {1}: parameters {2}", new Object[]
+                        { getMethodNamePrefix(), getMethodName(), Arrays.asList( params ) }, null );
                 Object result = m_method.invoke(componentInstance, params);
-                logger.log( LogService.LOG_DEBUG, "invoked {0}: {1}: parameters {2}", new Object[]
-                    { getMethodNamePrefix(), getMethodName(), Arrays.asList( params ) }, null );
+                logger.log( LogService.LOG_DEBUG, "invoked {0}: {1}", new Object[]
+                    { getMethodNamePrefix(), getMethodName() }, null );
                 return new MethodResult((m_method.getReturnType() != Void.TYPE), (Map) result);
             }
             else
             {
-                logger.log( LogService.LOG_WARNING, "Method {0} cannot be called on null object",
+                logger.log( LogService.LOG_WARNING, "Method {0}: {1} cannot be called on null object",
                     new Object[]
-                        { getMethodName() }, null );
+                        { getMethodNamePrefix(), getMethodName() }, null );
             }
         }
         catch ( IllegalStateException ise )
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
index d602bc6..e5ae3a1 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
@@ -54,6 +54,7 @@
 import org.apache.felix.scr.impl.metadata.ServiceMetadata.Scope;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceException;
 import org.osgi.framework.ServicePermission;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
@@ -997,9 +998,16 @@
                 return null;
             }
             final Dictionary<String, Object> serviceProperties = getServiceProperties();
-            ServiceRegistration<S> serviceRegistration = ( ServiceRegistration<S> ) bundleContext
-                    .registerService( services, getService(), serviceProperties );
-            return serviceRegistration;
+            try {
+				ServiceRegistration<S> serviceRegistration = (ServiceRegistration<S>) bundleContext
+						.registerService(services, getService(),
+								serviceProperties);
+				return serviceRegistration;
+			} catch (ServiceException e) {
+				log(LogService.LOG_ERROR, "Unexpected error registering component service with properties {0}", 
+						new Object[] {serviceProperties}, e);
+				return null;
+			}
         }
 
         @Override
