2009-08-14 69 views
0

我在新框中部署旧应用程序。当击中首次数据库,我得到PoolableConnectionFactory无效句柄

File input error: Cannot create PoolableConnectionFactory (Invalid handle) 

我建立了我的context.xml中的资源,我用了unixODBC DSN,并在web.xml我的资源引用。我还有什么遗漏?

from content.xml --> 

<Resource name="jdbc/MoleComp" auth="Container" 
type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="-1" 
removeAbandoned="false" removeAbandonedTimeout="60" 
username="userName" password="passWord" 
driverClassName="sun.jdbc.odbc.JdbcOdbcDriver" 
url="jdbc:odbc:DSNName"/> 

from app/WEB-INF/web.xml --> 

<resource-ref> 
    <description>DB connection</description> 
    <res-ref-name>jdbc/MoleComp</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

谢谢。

回答

0

另一个服务器上得到这个问题之后,我使用了unixODBC和odbc.jdbc到Java类型4驱动jTDS jtds.jdbc切换应用程序。性能也好一点!

0

首先,您应该从web.xml中删除< resource-def>。这只是定义数据源的另一种方法,您已经在context.xml中完成了这一工作。

该错误来自ODBC-JDBC桥驱动程序。因此,ODBC不在运行或者url="jdbc:odbc:DSNName"无效。

+0

谢谢志鸿。这是一个有效的DSN,我可以使用isql从shell中连接到它(与unixODB一起提供)。如果我给它一个无效的DSN,我会得到“无法创建PoolableConnectionFactory([unixODBC] [驱动程序管理器]未找到数据源名称,并且没有指定默认驱动程序)” – Mark 2009-08-14 18:45:07

+0

哦,我从web上删除。 XML,仍然得到相同的错误。 – Mark 2009-08-14 18:46:05

+0

我没有unixODB的经验。它必须是某种环境差异,导致它在isql中工作,而不是在Java中。 – 2009-08-14 23:30:03