В Джерси 1 можно было передать @Context ServletContext servletContext
к конструктор класса Application
, но в Джерси 2 это больше не работает. Кажется, что Джерси 2 будет вводить только во время запроса.
Чтобы обойти это на Джерси-2, используйте анонимный ContainerRequestFilter
, чтобы получить доступ к ServletContext во время запроса и передать необходимые параметры init в класс Application
.
public class MyApplication extends Application {
@Context protected ServletContext servletContext;
private String myInitParameter;
@Override
public Set<Object> getSingletons() {
Set<Object> singletons = new HashSet<Object>();
singletons.add(new ContainerRequestFilter() {
@Override
public void filter(ContainerRequestContext containerRequestContext) throws IOException {
synchronized(MyApplication.this) {
if(myInitParameter == null) {
myInitParameter = servletContext.getInitParameter("myInitParameter");
// do any initialisation based on init params here
}
}
}
return singletons;
});
};
}
Полезно знать! Не могли бы вы привести пример, чтобы ответить на поставленный вопрос? – Zero3
@ Zero3 См. Обновленный ответ. – Gili