Comme d'autres l'ont noté, le servletContext peut être injecté au niveau du terrain. Il peut également être injecté au niveau de la méthode:
public static class MyService {
private ServletContext context;
private int minFoo;
public MyService() {
System.out.println("Constructor " + context); // null here
}
@Context
public void setServletContext(ServletContext context) {
System.out.println("servlet context set here");
this.context = context;
minFoo = Integer.parseInt(servletContext.getInitParameter("minFoo")).intValue();
}
@GET
@Path("/thing")
public void foo() {
System.out.println("in wizard service " + context); // available here
System.out.println("minFoo " + minFoo);
}
}
Cela vous permettra d'effectuer l'initialisation supplémentaires avec le servletContext disponibles.
Évident remarque - vous n'avez pas à utiliser le nom de la méthode setServletContext. Vous pouvez utiliser n'importe quel nom de la méthode que vous voulez tant que vous suivez le standard java bean modèle de nommage pour les setters, nulle setXXX(Foo foo) et utiliser le @Contexte de l'annotation.