GlassFish连接池到MS Access

时间:2011-12-05 17:57:00

标签: ms-access jdbc odbc glassfish-3

对于我的罪,我必须使我正在处理的Web应用程序与我们的一个遗留应用程序使用的旧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,因为这更接近于它在最终应用中的使用方式。上面的代码运行正常并给出了预期的结果。

然后我在GlassFish 3.1.1下设置了一个JDBC连接池。我将资源类型设置为javax.sql.DataSource,并将数据源类名称设为sun.jdbc.odbc.ee.DataSource。我还设置了databaseName = MyDatabase的单个属性。

当我通过GlassFish ping数据库时,我收到以下错误消息:

Ping Connection Pool for MyConnectionPool is Failed. Ping failed 
Exception - Connection could not be allocated because: 
[Microsoft][ODBC Microsoft Access Driver] System resource exceeded.

GlassFish的system.log实际上并没有提供它刚刚报告的更多信息:

Exception while creating an unpooled [test] connection for pool [ MyConnectionPool ]

然后重复错误消息。我已经尝试更改GlassFish中的池参数,认为它可能是一个问题,它试图汇集多少连接,但是没有用。有什么想法吗?

P.S。转移到MS SQL / MySQL /其他数据库当前不是选项: - )

1 个答案:

答案 0 :(得分:0)

不知道实际上是什么问题,关闭更改自动ping并重新启动系统导致它开始工作,此后我没有遇到任何问题。