Я развернул веб-приложение EJB на tomcat, машине linux.Это приложение подключается к AWS RDS через поиск JNDI, представленный в классе @singleton
ejb.Каждую минуту мое приложение печатает содержимое БД в консоли.При первоначальном запуске приложения соединение с БД осуществляется один раз с использованием метода @PostConstruct
.После отработки отказа RDS подключение к базе данных RDS больше не доступно.Теперь я получаю следующую ошибку с трассировкой стека каждую минуту вместо содержимого БД в консоли:
Только в Linux Enivironment Эта ошибка выдается почти на 30 минут (@Timeout
методзапланировано запускать каждую минуту для отображения содержимого БД).Через 30 минут все в порядке и приложение работает нормально.
** В Windows ** после отработки отказа приложение работает нормально (т. Е. Через 2 минуты). Обычно при сбое RDS происходит сбой через 2 минуты !!
javax.ejb.ConcurrentAccessTimeoutException: Unable to get read lock on getABC()' method for: com.test.TestEJB
at org.apache.openejb.core.singleton.SingletonContainer.aquireLock(SingletonContainer.java:348)
at org.apache.openejb.core.singleton.SingletonContainer._invoke(SingletonContainer.java:253)
at org.apache.openejb.core.singleton.SingletonContainer.invoke(SingletonContainer.java:221)
at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:265)
at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:260)
at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:89)
Could this the issue be related to OS or anything else!??