protected void loadServices() throws ApplicationException {
    String packag = config.getProperty(Config.SCAN_PACKAGE);

    if (packag == null) {
      log.warn(MessageFormat.format("{0} is null. You can set it in your configuration properties.", Config.SCAN_PACKAGE));
    } else {

      Reflections reflections = new Reflections(packag);

      Set<Class<?>> serviceClasses = reflections.getTypesAnnotatedWith(Path.class);

      for (Class<?> clasz : serviceClasses) {
        if (Service.class.isAssignableFrom(clasz)) {
          Class<? extends Service> serviceClass = (Class<? extends Service>) clasz;
          Path path = serviceClass.getAnnotation(Path.class);
          String pathValue = path.value();

          if (!pathValue.startsWith("/")) {
            pathValue = "/".concat(pathValue);
          }

          services.put(pathValue, serviceClass);
        } else {
          throw new ApplicationException(MessageFormat.format(
                  "Class {0} must extends {1}",
                  clasz.getCanonicalName(),
                  Service.class.getCanonicalName()), null);
        }
      }
    }
  }