Джерси: как использовать InjectableProvider с аннотацией @Context?

Я подписался на этот пост и был создан первым настраиваемым поставщиком для инъекций, LocaleProvider , который сканирует HTTP-запрос для заголовка Accept-Language . Он отлично работает, если я использую его в ресурсе Джерси:

@Path("test")
@GET
public Response getStatus(@Context Locale locale) {
    log.finer("Locale: "+ locale);

    Response response = Response
            .noContent()
            .build();
    return response;
}

Но когда я хочу использовать его в ExceptionMapper , я не знаю, как ввести локаль. Я попытался аннотировать его как переменную-член:

public class MyExceptionMapper implements ExceptionMapper {
  @Context
  private Locale locale;

  @Override
  public Response toResponse(MyException ex) {
    ...
  }
}

, но это не удалось при развертывании:

The following errors and warnings have been detected with resource and/or provider classes:
SEVERE: Missing dependency for field: private java.util.Locale com.package.MyExceptionMapper.locale

Другие вещи, такие как UriInfo или HttpServletRequest , могут быть введены таким образом . Как мне получить доступ к моему собственному LocaleProvider?

К вашему сведению, это на Glassfish 3.1.1 с использованием Jersey 1.8.

7
задан Hank 3 October 2011 в 09:27
поделиться