Существует ли шаблон, позволяющий убедиться, что приложение Java ee развертывается, даже если источник данных неисправен? Мое приложение не запускается, если источник данных не может быть достигнут. Менеджер сущностей не может быть инициализирован и поэтому не может быть введен в мой ejb. Это терпит неудачу всего развертывания.
Приложение имеет DLQ для случаев, когда источник данных недоступен.
Пример:
persistance.xml
<persistence-unit name="dataSourceExample" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/dataSourceExample</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.generate_statistics" value="false"/>
</properties>
</persistence-unit>
Конфигурация источника данных в wildfly
<datasource jndi-name="java:jboss/datasources/dataSourceExample" pool-name="dataSourceExamplePool" use-ccm="false">
<connection-url>someurl</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<driver>com.oracle.ojdbc</driver>
<pool>
<max-pool-size>25</max-pool-size>
</pool>
<security>
<user-name>someusername</user-name>
<password>somepassword</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/>
<stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"/>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"/>
</validation>
<timeout>
<blocking-timeout-millis>5000</blocking-timeout-millis>
</timeout>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
Введенный менеджер сущностей в ejb
@PersistenceContext(unitName = "dataSourceExample")
private EntityManager dataSourceExampleEm;
Я просто хочу, чтобы приложение было развернуто, даже если оно не полностью функционально. Это сработает позже, когда источник данных «вернется».