我试图让Tomcat使用BoneCP作为连接池,因为DBCP在这里不能正常工作。
我尝试将它添加到定义我的webapp的context.xml中,如下所示:
<Context path="/reports" privileged="true" crossContext="true">
<Resource name="jdbc/IKOffice"
type="com.jolbox.bonecp.BoneCPDataSource"
auth="Container"
username="ik"
password="******"
jdbcUrl="jdbc:postgresql://localhost:5434/IKOffice_Core"
lazyInit="true"
partitionCount="1"
... more properties ...
logStatementsEnabled="false" />
</Context>但当我试图获取资源时,它总是说:
javax.naming.NamingException: Cannot create resource instance日志文件中没有错误,所有所需的jars都可用于webapp。这里发生什么事情?
当我使用这样的资源时,一切都正常了:
<Resource name="jdbc/IKOffice"
auth="Container"
type="javax.sql.DataSource"
username="ik"
password="******"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5434/IKOffice_Core"
maxActive="8"
maxIdle="4" />解决方案:
您必须指定一个BeanFactory,如下所示(第3行):
<Resource name="jdbc/IKOffice"
type="jcom.jolbox.bonecp.BoneCPDataSource"
factory="org.apache.naming.factory.BeanFactory"
auth="Container"
...发布于 2012-03-31 19:12:20
Tomcat使用工厂创建JNDI资源。对于数量有限的资源类型(包括javax.sql.DataSource),Tomcat知道它可以使用内置工厂。对于未知的资源类型(如jcom.jolbox.bonecp.BoneCPDataSource),需要指定用于创建资源的工厂。
https://stackoverflow.com/questions/9905871
复制相似问题