У меня есть приложения Java, развернутые на Jboss eap 6.3 в redhat 6, подключенные к oracle 11g. Я использую соединение jdbc следующим образом:
<datasource jta="true" jndi-name="java:/jdbc/myjdbc" pool-name="myConfigDS" enabled="true" use-java-context="true" use-ccm="false" statistics-enabled="true">
<connection-url>jdbc:oracle:thin:@(DESCRIPTION=(enable=broken)(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=MYSERVICENAME)))</connection-url>
<connection-property name="oracle.net.CONNECT_TIMEOUT">10000</connection-property>
<driver>oracle</driver>
<pool>
<min-pool-size>1</min-pool-size>
<max-pool-size>30</max-pool-size>
<prefill>true</prefill>
</pool>
<security>
<user-name>myusername</user-name>
<password>mypassword</password>
</security>
<validation>
<check-valid-connection-sql>SELECT 1 FROM DUAL</check-valid-connection-sql>
<background-validation>true</background-validation>
<background-validation-millis>60000</background-validation-millis>
<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>
<idle-timeout-minutes>15</idle-timeout-minutes>
</timeout>
</datasource>
Если это приложение простаивает в течение нескольких часов, и мы пытались запросить базу данных int, произойдет тайм-аут соединения ввода-вывода базы данных.
В своем исследовании я предполагаю, что сетевой брандмауэр заблокировал это соединение, если внутри нет трафика. У меня вопрос, как бороться с сетевым брандмауэром? Есть ли какой-либо параметр для добавления внутри соединения jndi в конфигурацию jboss xml?