Я использую Jetty 9.1 и Jersey 2.5.1. Джерси имеет встроенную поддержку для Jetty, так что я начинаю мой сервер так:Jetty Embedded, Jersey 2, Weld
public static void main(String[] args) {
URI baseUri = UriBuilder.fromUri("http://localhost/").port(8080).build();
ResourceConfig config = ResourceConfig.forApplicationClass(MyApplication.class);
Server server = JettyHttpContainerFactory.createServer(baseUri, config);
}
MyApplication просто вызывает this.packages(...)
для поиска моей REST классы API.
Однако класс api класса REST содержит аннотированное поле @Inject
, которое должно быть введено WELD. Очевидно, что WELD не запускается (поддержка CDI не включена), и более странно, похоже, что HK2 (используемый Джерси 2) пытается выполнить инъекцию.
(У меня есть org.glassfish.hk2.api.UnsatisfiedDependencyException
при ударе по конечной точке REST).
Как правильно настроить WELD (желательно программно)?
Убедитесь, что вы используете Weld 2.2+, поскольку он исправил несколько ошибок интеграции CDI с Jetty 9.1+. –