首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用bonecp作为Tomcat5.5数据源

使用bonecp作为Tomcat5.5数据源
EN

Stack Overflow用户
提问于 2012-03-28 10:45:16
回答 1查看 2.1K关注 0票数 4

我试图让Tomcat使用BoneCP作为连接池,因为DBCP在这里不能正常工作。

我尝试将它添加到定义我的webapp的context.xml中,如下所示:

代码语言:javascript
复制
<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>

但当我试图获取资源时,它总是说:

代码语言:javascript
复制
javax.naming.NamingException: Cannot create resource instance

日志文件中没有错误,所有所需的jars都可用于webapp。这里发生什么事情?

当我使用这样的资源时,一切都正常了:

代码语言:javascript
复制
     <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行):

代码语言:javascript
复制
 <Resource name="jdbc/IKOffice"
          type="jcom.jolbox.bonecp.BoneCPDataSource"
          factory="org.apache.naming.factory.BeanFactory"
          auth="Container"
          ...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-31 19:12:20

Tomcat使用工厂创建JNDI资源。对于数量有限的资源类型(包括javax.sql.DataSource),Tomcat知道它可以使用内置工厂。对于未知的资源类型(如jcom.jolbox.bonecp.BoneCPDataSource),需要指定用于创建资源的工厂。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9905871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档