loadService(filePath) {
		let fName, schema;

		try {
			fName = require.resolve(path.resolve(filePath));
			this.logger.debug(`Load service '${path.basename(fName)}'...`);

			const r = require(fName);
			schema = r.default != null ? r.default : r;

			let svc;
			schema = this.normalizeSchemaConstructor(schema);
			if (utils.isInheritedClass(schema, this.ServiceFactory)) {
				// Service implementation
				svc = new schema(this);

				// If broker is started, call the started lifecycle event of service
				if (this.started || this.servicesStarting) this._restartService(svc);
			} else if (utils.isFunction(schema)) {
				// Function
				svc = schema(this);
				if (!utils.isInheritedClass(svc, this.ServiceFactory)) {
					svc = this.createService(svc);
				} else {
					// If broker is started, call the started lifecycle event of service
					if (this.started || this.servicesStarting) this._restartService(svc);
				}
			} else if (schema) {
				// Schema object
				svc = this.createService(schema);
			}

			if (svc) {
				svc.__filename = fName;
			}

			return svc;
		} catch (e) {
			this.logger.error(`Failed to load service '${filePath}'`, e);
			this.broadcastLocal("$broker.error", {
				error: e,
				module: "broker",
				type: C.FAILED_LOAD_SERVICE
			});
			throw e;
		}
	}
Load a service from file

@param {string} 		Path of service
@returns	{Service}	Loaded service

@memberof ServiceBroker