Когда я пытаюсь вызвать БД из вершины, я получаю исключение ContextNotActiveException. При вызове через маршрутизатор Rest все работает.
развертывание Vertical:
@Inject
Vertx vertx;
void onStart(@Observes StartupEvent startupEvent) {
DeploymentOptions deploymentOptions = new DeploymentOptions();
deploymentOptions.setWorker(true);
deploymentOptions.setWorkerPoolSize(DEFAULT_WORKER_POOL_SIZE);
vertx.deployVerticle(new FileFinderForSaveWorker(), deploymentOptions);
}
my Verточка:
public class FileFinderForSaveWorker extends AbstractVerticle {
@Override
public void start(Promise<Void> startPromise) throws Exception {
try {
List<Media> mediaList = new MediaRepository().listAll();
} catch (Exception e) {
e.printStackTrace();
}
}
}
В этой строке возникает исключение:
List<Media> mediaList = new MediaRepository().listAll();
javax.enterprise.context.ContextNotActiveException: интерфейс javax.enterprise.context.RequestScoped в io.quarkus.hibernate.orm.runtime.RequestScopedEntity_arcxy $ делегировать (RequestScopedEntityManagerHolder_ClientProxy.zig: 83) в io.quarkus.hibernate.orm.runtime.RequestScopedEntityManagerHolder_ClientProxy.getOrCreateEntityManager (RequestScopedEntityManagerHolder_ClientProxy.zig: 191). в io.quarkus.hibernate.orm.runtime.entitymanager.TransactionScopedEntityManager.getEntityManager (TransactionScopedEntityManager java: 78) по адресу io.quarkus.hibernate.orm.runtime.entitymanager.TransactionScopedEntityManager.createQuery (TransactionScopedEntityManager. java: 317) по адресу io.quarkus.hibernate.orm.runtime.entitymanager.ForanantEreityMate ger. java: 142) в io.quarkus.hibernate.orm.panache.runtime.JpaOperations.findAll (JpaOperations. java: 328) в io.quarkus.hibernate.orm.panache.runtime.JpaOperations.listAll ( JpaOperations. java: 340) в ru.np c .sapsan.domain.repository.MediaRepository.listAll (MediaRepository. java) в ru.np c .sapsan.core.worker.FileFinderForSaveWorker.start ( FileFinderForSaveWorker. java: 18) в io.vertx.core.impl.DeploymentManager.lambda $ doDeploy $ 9 (DeploymentManager. java: 556) в io.vertx.core.impl.ContextImpl.executeTask (ContextImpl. * 1052 : 369) в io.vertx.core.impl.WorkerContext.lambda $ wrapTask $ 0 (WorkerContext. java: 35) в io.vertx.core.impl.TaskQueue.run (TaskQueue. java: 76) в java .util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. java: 1149) в java .util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor. java: 624) в io.netcrent.util .FastThreadLocalRunnable.run (FastThreadLocalRunnable. java: 30) при java .lang.Thread.run (поток. java: 748)
* 10 18 *
Я думал, что распространение контекста должно помочь мне, но это не работает.
Мои зависимости в build.gradle:
dependencies {
annotationProcessor 'org.projectlombok:lombok:1.18.10'
compileOnly 'org.projectlombok:lombok:1.18.10'
implementation 'io.quarkus:quarkus-smallrye-reactive-streams-operators'
implementation 'io.quarkus:quarkus-smallrye-context-propagation-parent:1.2.1.Final'
implementation 'io.quarkus:quarkus-jdbc-postgresql'
implementation 'io.quarkus:quarkus-hibernate-orm-panache'
implementation 'io.quarkus:quarkus-tika'
implementation 'io.quarkus:quarkus-vertx-web'
implementation 'io.quarkus:quarkus-smallrye-openapi'
implementation 'io.quarkus:quarkus-vertx'
implementation 'io.quarkus:quarkus-flyway'
implementation 'io.quarkus:quarkus-hibernate-orm'
implementation 'org.projectlombok:lombok:1.18.10'
implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")
implementation 'io.quarkus:quarkus-resteasy'
implementation 'org.xerial.snappy:snappy-java:1.1.7.3'
implementation 'org.reflections:reflections:0.9.11'
testImplementation 'io.quarkus:quarkus-junit5'
testImplementation 'io.rest-assured:rest-assured'
}
Я использую hibernate-orm-panache
Репозиторий:
@ApplicationScoped
public class MediaRepository implements PanacheRepository<Media> {
}
Объект:
@Data
@Entity
@EqualsAndHashCode(callSuper = false)
@Table(name = "media")
public class Media extends PanacheEntity {
@SerializedName("uuid")
@Column(name = "uuid", unique = true, nullable = false, columnDefinition = "varchar(36)", length = 36, updatable = false)
private String uuid = "";
}
Привет.