public void initProvider(int port, List<Object> classesServices) {
		System.out.println("[Provider] : Start server on port " + port);

		// Create the server
		WebServer webServer = new WebServer(port);
		XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer();

		// Handle the services class
		PropertyHandlerMapping phm = new PropertyHandlerMapping();
		for (Object classService : classesServices) {
			try {
				if(classService instanceof ClassInterfaceRelation) {
					ClassInterfaceRelation relTmp = (ClassInterfaceRelation)classService;
					phm.addHandler(relTmp.getCorrespondingInterface().getName(), relTmp.getCorrespondingClass());
					System.out.println("[Provider] : Now handle " + relTmp.getCorrespondingInterface().getSimpleName());
				}
				else if(classService instanceof Class) {
					Class classTmp = (Class)classService;
					if(classTmp.isInterface()) {
						System.err.println("[Provider] : Can't handle an interface " + classTmp.getSimpleName());
					}
					else {
						phm.addHandler(classTmp.getName(), classTmp);
						System.out.println("[Provider] : Now handle " + classTmp.getSimpleName());
					}
				} 
				else {
					System.err.println("[Provider] : An object can't be handled");
				}
			} catch (XmlRpcException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.err.println("[Provider] : Can't handle " + classService);
			}
		}
		xmlRpcServer.setHandlerMapping(phm);
		XmlRpcServerConfigImpl serverConfig = (XmlRpcServerConfigImpl) xmlRpcServer
				.getConfig();
		serverConfig.setEnabledForExtensions(true);
		serverConfig.setContentLengthOptional(false);

		// Start the server
		System.out.println("[Provider] : Finish to configure services");
		System.out.println("[Provider] : Available functions :");
		try {
			for (String line : phm.getListMethods()) {
				System.out.println("\t" + line);
			}
		} catch (XmlRpcException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.err.println("[Provider] : Can't list functions.");
		}
		try {
			webServer.start();
			System.out.println("[Provider] : Server started.");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.err
					.println("[Provider] :  Can't start server");
		}

		// Retrieve and save server adress
		InetAddress addr;
		try {
			addr = InetAddress.getLocalHost();
			// Get IP Address
			byte[] adress = addr.getAddress();
			ipAdress = convertRawToIpAddress(adress);
			System.out.println("[Provider] : Launch on adress " + ipAdress);
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.err.println("[Provider] : Can't retrieve his adress.");
		}
	}