private void registerOsgiService(final String beanName, final OsgiService service) {
final Class<?> type = applicationContext.getType(beanName);
final Class<?>[] interfaces = getInterfaces(type, service);
try {
logger.debug("Registering bean {} as OSGi service using interfaces {}.", beanName, Arrays.asList(interfaces));
final OsgiServiceFactoryBean factoryBean = new OsgiServiceFactoryBean();
factoryBean.setServiceProperties(getServiceProperties(service));
factoryBean.setInterfaces(interfaces);
factoryBean.setBeanFactory(applicationContext);
factoryBean.setTargetBeanName(beanName);
factoryBean.setBundleContext(bundleContext);
factoryBean.afterPropertiesSet();
} catch (final Exception e) {
logger.warn("Error registering bean '{}' as OSGi service.", beanName, e);
}
}