я использую пулы соединения в Tomcat 6 и я configued этот путь внутри context.xml файлаПочему подключение к базе данных закрывается после каждой операции
<Resource name="jdbc/myoracle" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:ORCLE"
username="scott" password="tiger" maxActive="20" maxIdle="10"
maxWait="-1"/>
И это мой завод класс, чтобы получить соединение с помощью DataSource
public class ConnPoolFactory {
private static DataSource dataSource;
private static Connection connection;
private ConnPoolFactory() {
}
public static synchronized Connection getConnection() throws SQLException {
try {
if (connection == null) {
Context initContext = new InitialContext();
Context envContext = (Context) initContext
.lookup("java:/comp/env");
dataSource = (DataSource) envContext.lookup("jdbc/myoracle");
connection = dataSource.getConnection();
} else {
return connection;
}
} catch (NamingException e) {
e.printStackTrace();
}
return connection;
}
}
И от моего сервлета внутри наконец блока, я закрываю это так
try {
connection = ConnPoolFactory.getConnection();
finally
{
if(conn!=null)
con.close();
}
В моем пользовательском интерфейсе я могу дать разные команды (нажмите кнопку), например Insert, Update, Delete, Select -.
Проблема, с которой я сталкиваюсь, заключается в том, что приложение запускается только для одной команды, то есть, если я нажал кнопку «Вставить», она вставляет запись отлично, а после этого, если еще раз я даю любую команду, Исключение на консоли сервера, говорящее, что соединение закрыто.
Если я удалить, что, наконец, блок кода внутри моего сервлета, то приложение работает нормально для любого числа команд
Может кто-нибудь пожалуйста, дайте мне знать, что случилось с этим finnaly блок ??
Вам интересно, почему соединение закрыто после того, как вы вызвали его? – Mat