Использование bonecp в качестве источника данных Tomcat 5.5 - PullRequest
4 голосов
/ 28 марта 2012

Я пытаюсь заставить Tomcat использовать BoneCP в качестве пула соединений, потому что здесь не работает DBCP.

Я попытался добавить его в 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

В лог-файле нет ошибок, и все необходимые jar-файлы доступны для веб-приложения.Что здесь происходит?

Все работало, когда я использовал такой ресурс:

     <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"
          ...

1 Ответ

4 голосов
/ 31 марта 2012

Tomcat использует фабрики для создания ресурсов JNDI.Для ограниченного числа типов ресурсов (включая javax.sql.DataSource) Tomcat знает, что он может использовать встроенную фабрику.Для неизвестных типов ресурсов (таких как jcom.jolbox.bonecp.BoneCPDataSource) необходимо указать фабрику, которая будет использоваться для создания ресурса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...