Jak włączyć wtrysk CDI w serwis WWW (jaxrs / jersey) na grawzly java se?

Jak zezwolić na wtłaczanie zasobów CDI do spokojnych zasobów usługi internetowej? Używam standardowego java używając weld 2 (cdi), jersey (jaxrs) i grizzly (serwer WWW). Oto mój prosty zasób internetowy:

import training.student.StudentRepository;
import javax.inject.Inject;
import javax.ws.rs.*;

@Path("student")
public class StudentWebResource {
  @Inject
  private StudentRepository studentRepository;  

  @GET
  @Path("count")
  @Produces(MediaType.TEXT_PLAIN)
  public Integer getCount() {
    return studentRepository.studentCount();
  }
}

A oto, w jaki sposób otrzymałem spoiny, uruchamiając mój prosty serwer WWW:

public class Main {
  public static void main(String[] args) throws Exception {
    startCdiApplication();
  }

  public static void startCdiApplication() throws Exception {
    Weld weld = new Weld();
    try {
      WeldContainer container = weld.initialize();
      Application application = container.instance().select(WebServer.class).get();
      application.run();
    } 
    finally {
      weld.shutdown();
    }
  }
}

Kod, który, jak podejrzewam, będzie musiał zostać zmodyfikowany, aby poinformować jerseya o użyciu spoiny do rozdzielczości wstrzykiwania CDI:

...
import org.glassfish.grizzly.http.server.HttpServer;
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
import org.glassfish.jersey.jackson.JacksonFeature;
import org.glassfish.jersey.server.ResourceConfig;

public class WebServer implements Application {

  /*
   * startup the grizzly http server to make available the restful web services
   */
  private void startWebServer() throws IOException, InterruptedException {
    final ResourceConfig resourceConfig = new ResourceConfig().packages("training.webservice").register(new JacksonFeature());
    final HttpServer server = GrizzlyHttpServerFactory.createHttpServer(getBaseUri(), resourceConfig);
    server.start();
    Thread.currentThread().join();
  }

  ...

  @Override
  public void run() throws IOException, InterruptedException {
    startWebServer();
  }
}

questionAnswers(3)

yourAnswerToTheQuestion