code: public void init()
      {
          LOG.info("Scanning esjps for REST implementations");
          try {
              if (!Context.isThreadActive()) {
                  Context.begin(null, Context.Inheritance.Local);
                  Context.getThreadContext().setRequestAttribute(CONTEXTHINT, true);
              }
              registerClasses(new EsjpScanner().scan(Path.class, Provider.class));
          } catch (final EFapsException e) {
              LOG.error("Catched EFapsException", e);
          }
          registerClasses(Compile.class);
          registerClasses(Update.class);
          registerClasses(RestEQLInvoker.class);
          registerClasses(RestContext.class);
          registerClasses(Search.class);
          registerClasses(ObjectMapperResolver.class);
          if (EFapsResourceConfig.LOG.isInfoEnabled() && !getClasses().isEmpty()) {
              final Set<Class<?>> rootResourceClasses = get(Path.class);
              if (rootResourceClasses.isEmpty()) {
                  EFapsResourceConfig.LOG.info("No root resource classes found.");
              } else {
                  logClasses("Root resource classes found:", rootResourceClasses);
              }
  
              final Set<Class<?>> providerClasses = get(Provider.class);
              if (providerClasses.isEmpty()) {
                  EFapsResourceConfig.LOG.info("No provider classes found.");
              } else {
                  logClasses("Provider classes found:", providerClasses);
              }
          }
          this.cachedClasses.clear();
          this.cachedClasses.addAll(getClasses());
      }
docs: Initialize and scan for root resource and provider classes using a
  scanner.