Я следовал инструкции по работе с остальными клиентами на веб-сайте Quarkus. Работает нормально. Но при регистрации глобального поставщика с использованием шаблона ServiceLoader, как описано в спецификации, внедрение компонентов CDI не сработало, все они равны нулю. Я скачал пример и просто добавил следующие классы:
package org.acme.rest.client;
import org.eclipse.microprofile.rest.client.ext.ResponseExceptionMapper;
import javax.enterprise.context.ApplicationScoped;
import javax.ws.rs.core.Response;
@ApplicationScoped
public class MyExceptionMapper implements ResponseExceptionMapper<Exception> {
@Override
public Exception toThrowable (Response response) {
return new Exception();
}
}
package org.acme.rest.client;
import org.eclipse.microprofile.rest.client.RestClientBuilder;
import org.eclipse.microprofile.rest.client.spi.RestClientBuilderListener;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
@ApplicationScoped
public class MyListener implements RestClientBuilderListener {
@Inject MyExceptionMapper myExceptionMapper;
@Override
public void onNewBuilder (RestClientBuilder builder) {
builder.register(myExceptionMapper);
}
}
Я также добавил файл META-INF / services / org.eclipse.microprofile.rest.client.spi.RestClientBuilderListener с содержимым org.acme.rest.client.MyListener. Метод MyListener onNewBuilder вызывается, но внедренный поставщик MyExceptionMapper имеет значение null. Как зарегистрировать глобального провайдера в клиенте Quarkus?