Я пытаюсь запустить пакетное задание параллельно, используя параллельные потоки java 8:
ForkJoinPool forkJoinPool = new ForkJoinPool(8);
forkJoinPool.execute(() -> tenants.parallelStream()
.forEach((tenant) -> getDataPerTenant(tenant)));
В getDataPerTenant (tenant) я использую jpa для доступа к базе данных и выполняю несколько запросов,Первая проблема, с которой я столкнулся, заключалась в том, что ContextClassLoader был нулевым.Затем я попытался установить ContextClassLoader, но следовал этому сообщению: Параллельный поток не устанавливает Thread.contextClassLoader после обновления tomcat и попытался создать ForkJoinPool.
Однако потоки, поддерживаемые ForkJoinPool, выдают исключение при создании EntityManager:
No Persistence provider for EntityManager named TestService
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)
Я полагаю, это потому, что ни один поставщик сохраняемости не может быть разрешен.
Есть ли в любом случаеустановить поставщик постоянства для потока?Просто чтобы уточнить, у меня есть persistence.xml, и JPA работает, когда потоки создаются веб-приложением.
Эта проблема возникает, только когда я пытаюсь создать новые потоки, которые хотят получить доступ к слою JPA.
Любая помощь будет принята с благодарностью. Спасибо!