У нас есть приложение, в котором мы использовали пружину для МОК. У нас bean-компонент dataSource настроен в applicationContext.xml, и на него ссылаются другие определения bean-компонента.
Определение bean-компонента dataSource выглядит следующим образом:
<bean id="dbDataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url"
value="jdbc:oracle:oci:@TESTDB" />
<property name="username" value="TESTUSER" />
<property name="password" value="TESTPWD" />
<property name="initialSize" value="50" />
<property name="maxActive" value="40" />
<property name="maxIdle" value="10" />
<property name="minIdle" value="10" />
<property name="maxWait" value="-1" />
</bean>
<bean id="serviceDAO" class="com.test.impl.ServiceDAOImpl">
<property name="dataSource" ref="dbDataSource" />
</bean>
ServiceDAOImpl выглядит следующим образом:
public class ServiceDAOImpl implements ServiceDAO {
private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public ValueObj readValue(String key) {
String query = "SELECT * FROM SERVICE_LOOKUP WHERE KEY=?";
/**
* Implement the RowMapper callback interface
*/
return (ValueObj) jdbcTemplate.queryForObject(query,
new Object[] { key }, new RowMapper() {
public Object mapRow(ResultSet resultSet, int rowNum)
throws SQLException {
return new ValueObj(resultSet.getString("KEY"),
resultSet.getString("VALUE"));
}
});
}
public ServiceDAOImpl() {
}
}
Теперь при запуске сервера инъекция происходит нормально, и когда мы используем источник данных в serviceDAOImpl, соединение происходит нормально. Но при самом первом вызове из базы данных ответ занимает около 3 минут. Я думаю, это потому, что создание пула выполняется во время первого вызова, и мы установили параметр "initialSize" = 50
в applicationConext.xml
.
Итак, чтобы избежать этого, нам нужен способ, которым пул может быть создан во время самого запуска приложения и может использоваться напрямую.
Пожалуйста, предложите. Дайте мне знать, если потребуется какое-либо разъяснение.
С уважением
* Сара * 1017