У меня есть приложение EJB, которое использует JPA 2.0 на Glassfish 3.1.2 (провайдер EclipseLink). Когда база данных не работает, приложение не запускается и даже больше: не может быть развернуто. Это связано с тем, что EclipseLink выполняет некоторую начальную проверку.Glassfish: тихо игнорировать недоступный источник данных при запуске приложения
Есть ли способ, которым приложение можно отвлекать и запускать, даже если база данных не работает?
Фон: недоступный ресурс не вступает в игру до тех пор, пока не будет вызвана первая бизнес-функция, которая обращается к базе данных. От запуска приложения до первого вызова бизнес-функции есть окно времени, в котором может быть запущена база данных.
Изменение значения по умолчанию в glassfish-resources.xml
для атрибутов connection-creation-retry-attempts
и connection-creation-retry-interval-in-seconds
из <jdbc-connection-pool>
помогает в некотором роде, но это все-таки проверить базу данных Availabilty при запуске не первое использовании.
ExceptionHandler
от EclipseLink не так, как я имею в виду: когда обработчик исключений входит в игру EclipseLink уже начал процесс проверки и, следовательно, попытался подключиться к базе данных. То, что я ищу, - это отложить процесс проверки до первого бизнес-вызова.
Если я использую свой собственный EntityManagerFactory без инъекции, я должен управлять транзакциями на себя, я полагаю. Это правильно? – Claude
@ Майкл, Да, это правильно. – nickrak
Есть ли лучший способ, например, конфигурация в файле persistence.xml или развертывании с помощью glassfish 4? Иногда наша база данных не работает во время развертывания, но я бы хотел избежать ручного управления транзакциями. – bdrx