Для моих грехов я должен заставить веб-приложение, над которым я работаю, взаимодействовать со старой базой данных MS Access, которая используется одним из наших старых приложений.
Первая проблема с Access, конечно, заключается в том, как установить соединение.После долгих поисков я не смог найти ни одного драйвера типа 3 или 4, который бы мне понравился (все, кто их продает, кажется, прекратили разработку много лет назад), что подтолкнуло меня к использованию моста JDBC-ODBC.
Поскольку я не использовал мост более десяти лет, я быстро набросал код, чтобы проверить, все ли работает:
sun.jdbc.odbc.ee.DataSource ds = new sun.jdbc.odbc.ee.DataSource();
ds.setDatabaseName("MyDatabase");
Connection conn = ds.getConnection();
PreparedStatement stmt = conn.prepareStatement( "SELECT * FROM MyTable" );
ResultSet rs = stmt.executeQuery();
while( rs.next() ) {
System.out.println( rs.getString( 1 ) );
}
Я решил использовать DataSource
, так как это ближекак это будет использоваться в финальной заявке.Приведенный выше код работает нормально и дает ожидаемый результат.
Затем я настроил пул соединений JDBC под GlassFish 3.1.1.Я установил тип ресурса на javax.sql.DataSource
и дал имя класса источника данных как sun.jdbc.odbc.ee.DataSource
.Я также установил одно свойство databaseName = MyDatabase.
Когда я проверяю базу данных через GlassFish, я получаю это сообщение об ошибке:
Ping Connection Pool for MyConnectionPool is Failed. Ping failed
Exception - Connection could not be allocated because:
[Microsoft][ODBC Microsoft Access Driver] System resource exceeded.
system.log для GlassFish действительно не обеспечиваетлюбую дополнительную информацию, которую он просто сообщает:
Exception while creating an unpooled [test] connection for pool [ MyConnectionPool ]
и затем повторяет сообщение об ошибке.Я попытался изменить параметры пула в GlassFish, думая, что это может быть проблемой с тем, сколько соединений он пытается объединить, но это не сработало.Есть идеи?
PS Переход на MS SQL / MySQL / Другие БД на данный момент отсутствует и опция: -)