Я пытаюсь управлять классом через CDI под названием MongoQuery, который содержит логику для запросов к MongoDB.Для этого потребуется информация из кэшей, управляемых с помощью ArC CDI (реализация Quarkus flavor CDI для подложки VM).Я могу создать его вручную в своем классе ListingResource (см. Закомментированный код в указанном классе, чтобы узнать, как я это делал), но не тогда, когда я установил управление им в области запроса.
Все элементы работают по отдельности, когда я собираю все это вместе, оно разваливается и жалуется, что есть неразрешенные зависимости.Я включил трассировку стека, которую я получаю при попытке сборки, а также некоторые соответствующие фрагменты кода классов, которые вызывают проблемы при построении.
Что вызывает проблемы в CDI?Единственное, о чем я мог подумать, это могло бы вызвать проблему - это стирание типов, вызывающее проблемы при поиске соответствующих bean-компонентов, но у меня есть общие шаблоны, разбросанные по коду, и до сих пор не было проблем.
Фактический код был передан в GitHub fork в текущем состоянии, если кто-то хочет увидеть полный код.
org.eclipsefoundation.marketplace.resource.ListingResource
@Path("/listings")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@RequestScoped
public class ListingResource {
private static final Logger LOGGER = LoggerFactory.getLogger(ListingResource.class);
@Inject
MongoDao dao;
@Inject
CachingService<List<Listing>> cachingService;
@Inject
RequestWrapper params;
@Inject
DtoFilter<Listing> dtoFilter;
@Inject
MongoQuery<Listing> q;
/**
* Endpoint for /listing/ to retrieve all listings from the database along with
* the given query string parameters.
*
* @param listingId int version of the listing ID
* @return response for the browser
*/
@GET
public Response select() {
//MongoQuery<Listing> q = new MongoQuery<>(params, dtoFilter);
...
org.eclipsefoundation.marketplace.model.MongoQuery
@RequestScoped
public class MongoQuery<T> {
private static final Logger LOGGER = LoggerFactory.getLogger(MongoQuery.class);
@Inject
RequestWrapper wrapper;
@Inject
DtoFilter<T> dtoFilter;
private Bson filter;
private Bson sort;
// flag that indicates that aggregate should be used as filter
private boolean useAggregate = false;
...
Stacktrace:
[error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.eclipsefoundation.marketplace.model.MongoQuery<org.eclipsefoundation.marketplace.dto.Listing> and qualifiers [@Default]
- java member: org.eclipsefoundation.marketplace.resource.ListingResource#q
- declared on CLASS bean [types=[org.eclipsefoundation.marketplace.resource.ListingResource, java.lang.Object], qualifiers=[@Default, @Any], target=org.eclipsefoundation.marketplace.resource.ListingResource]
at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:835)
at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:214)
at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:106)
at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:249)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at io.quarkus.deployment.ExtensionLoader$1.execute(ExtensionLoader.java:768)
at io.quarkus.builder.BuildContext.run(BuildContext.java:415)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2011)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1535)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1426)
at java.lang.Thread.run(Thread.java:748)
at org.jboss.threads.JBossThread.run(JBossThread.java:479)```