docs: @Override
  	public final void afterPropertiesSet()
  			throws Exception {
  
  		// find the ObjectMapper
  		if (objectMapper == null
  				&& applicationContext != null
  				&& applicationContext.containsBean("objectMapper")) {
  			objectMapper = (ObjectMapper) applicationContext.getBean("objectMapper");
  		}
  		if (objectMapper == null && applicationContext != null) {
  			try {
  				objectMapper = BeanFactoryUtils.beanOfTypeIncludingAncestors(applicationContext, ObjectMapper.class);
  			} catch (Exception e) {
  				logger.error("Could not load ObjectMapper from ApplicationContext", e);
  			}
  		}
  		if (objectMapper == null) {
  			objectMapper = new ObjectMapper();
  		}
  
  		// create the service
  		Object service = ProxyUtil.createCompositeServiceProxy(
  				getClass().getClassLoader(), services,
  				serviceInterfaces, allowMultipleInheritance);
  
  		// create the server
  		jsonRpcServer = new JsonRpcServer(objectMapper, service);
  		jsonRpcServer.setErrorResolver(errorResolver);
  		jsonRpcServer.setBackwardsCompatible(backwardsCompatible);
  		jsonRpcServer.setRethrowExceptions(rethrowExceptions);
  		jsonRpcServer.setAllowExtraParams(allowExtraParams);
  		jsonRpcServer.setAllowLessParams(allowLessParams);
  
  		jsonRpcServer.setInvocationListener(invocationListener);
  		jsonRpcServer.setHttpStatusCodeProvider(httpStatusCodeProvider);
  		jsonRpcServer.setConvertedParameterTransformer(convertedParameterTransformer);
  		jsonRpcServer.setShouldLogInvocationErrors(shouldLogInvocationErrors);
  
  		if (contentType != null) {
  			jsonRpcServer.setContentType(contentType);
  		}
  
  		ReflectionUtil.clearCache();
  		
  		// export
  		exportService();
  	}