Несколько entityManagerFactories (используется шаблон 1P C) приводит к java .lang.IllegalStateException: 'url' не устанавливается исключение - PullRequest
1 голос
/ 25 февраля 2020

У меня есть проект Spring Maven, использующий Java 11. Jboss WIldfly 15.0.1 Final - мой сервер развертывания.

Чтобы импортировать данные (объекты, использующие Hibernate) из одного источника данных в другой источник данных (MySQL) - я добавил один первичный entityManagerFactory с JpaTransactionManager, и у меня есть две другие фабрики диспетчера сущностей отдельно perisistenceUnits и chainedTransactionManager используется (для 1-го этапа коммит-1P C commnit).

При развертывании войны иногда я получаю следующее исключение:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name
 'someDAO': Injection of persistence dependencies failed; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
 'onetimeConfig': Injection of persistence dependencies failed; nested exception is
 org.springframework.beans.factory.BeanCreationException: Error creating bean with name
 'entityMgrFactory2' defined in class path resource [com/path/ImportConfig.class]: Bean 
instantiation via factory method failed; nested exception is
 org.springframework.beans.BeanInstantiationException: Failed to instantiate
 [javax.persistence.EntityManagerFactory]: Factory method 'entityMgrFactory2' threw exception;
 nested exception is java.lang.IllegalStateException: 'url' not set

Заголовок класса someDAO:

@Transactional(rollbackFor = {Exception.class})
@Repository("someDAO")
public class SomeDAOImpl extends ParentDAOImpl implements SomeDAO {

Класс someDAO расширяет класс ParentDAOImpl, в котором используется основной entityManagerFactory, и также упоминается с помощью @DependsOn. Итак, почему при развертывании создание someDAO пытается инициировать создание entityMgrFactory2, когда упоминается entityManagerFactory в?!

@Repository("parentDAOImpl")
@DependsOn({"entityManagerFactory"})
public class ParentDAOImpl implements ParentDAO, Serializable {
    @PersistenceContext
    private transient EntityManager entityManager;
    ...

Проблема никогда не повторяется на моей локальной машине. Это происходит только при развертывании на других серверах, и из-за этого происходит сбой развертывания. А также исключение иногда упоминает someDAO, а иногда - другое DAOclass, которое распространяется ParentDAOImpl.

Пожалуйста, помогите мне, я новичок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...