我目前正在使用 BoneCP 作为连接池管理器,因为没有真正的替代方案(c3p0 已死)。我正在使用hibernate 4和spring 3.1,一切正常。唯一困扰我的是自定义驱动程序的注册,例如oracle.jdbc.driver.OracleDriver
.
当应用程序启动并从数据库加载一些信息时,我收到以下消息:
java.sql.SQLException:找不到适合 jdbc:oracle:thin:@localhost:xxx:xxxx 的驱动程序
数据源注册如下:
<bean id="mainDataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy method="close">
<property name="driverClass" ref="hibernate.connection.driver_class" />
<property name="jdbcUrl" ref="hibernate.connection.url" />
<property name="username" ref="hibernate.connection.username" />
<property name="password" ref="hibernate.connection.password" />
<property name="poolName" ref="hibernate.connection.username"/>
...
</bean>
然后将此数据源注入会话工厂。
在 Eclipse 中的码头容器中运行此应用程序时,它可以完美运行。在 Tomcat 6.x 或 Websphere 8.x 上部署时,无法找到指定的驱动程序。
我试图将此驱动程序添加到spring datasourcemanager:
<bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" ref="hibernate.connection.driver_class"/>
<property name="url" ref="hibernate.connection.url"/>
<property name="username" ref="hibernate.connection.username"/>
<property name="password" ref="hibernate.connection.password"/>
</bean>
这“解决了”我的问题,但现在从数据库加载数据时出现连接关闭异常。(在启动时)。我可以使用我的应用程序,但有时此连接关闭错误会在随机时刻再次发生。
我看到 BoneCP 团队确认第一个问题是BoneCP 错误,但尚未提交。我试图从这个错误跟踪器站点实施建议的解决方案,但我再次收到连接关闭错误。
有什么建议么?