Не удается найти класс org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory в Tomcat7 / Ubuntu 12.10? (Возможная ошибка)

Tomcat7: 7.0.30-0ubuntu1.1

Tomcat 7 имеет файлы jar commons-dbcp.jar и tomcat-dbcp.jar, но в tomcat-dbcp.jar это файл org.apache .tomcat. dbcp .BasicDataSourceFactory вместо класса org.apache.tomcat. dbcp.dbcp .BasicDataSourceFactory, который ищет.

первопричина

javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]
    org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:121)
    javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
    org.apache.naming.NamingContext.lookup(NamingContext.java:843)
    org.apache.naming.NamingContext.lookup(NamingContext.java:154)
    org.apache.naming.NamingContext.lookup(NamingContext.java:831)
    org.apache.naming.NamingContext.lookup(NamingContext.java:168)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    java.lang.Thread.run(Thread.java:722)
4
задан 20 March 2013 в 12:47

2 ответа

Для дано решение этой же проблемы в StackOverflow путем изменения тега ресурса в conf / context.xml для использования factory="org.apache.commons.dbcp.BasicDataSourceFactory" вместо фабрики по умолчанию Tomcat 7. Вы можете увидеть причину этой проблемы.

Тег ресурса будет выглядеть примерно так (взят из ссылочного ответа):

<Resource name="jdbc/myDataSource"
    auth="Container"
    type="javax.sql.DataSource"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/myDatabase"
    username="username" password="password"
    validationQuery="SELECT COUNT(*) FROM MY_TABLE"
    factory="org.apache.commons.dbcp.BasicDataSourceFactory" />
0
ответ дан 20 March 2013 в 12:47

Заводской источник данных по умолчанию в Tomcat 7 - org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory. Он содержится в jar-файле, который сопровождающие Debian не распространяют.

Tomcat 7 теперь включает другую реализацию пула соединений, которую можно использовать вместо этого, но это не по умолчанию.

org.apache.tomcat.jdbc.pool.DataSourceFactory

Мы могли бы изменить заводскую настройку по умолчанию на такую, чтобы она уже была включена в текущий дистрибутив, и решить эту проблему.

Версия Ubuntu: 12.10

tomcat7: 7.0.30-0ubuntu1.1

0
ответ дан 20 March 2013 в 12:47

Другие вопросы по тегам:

Похожие вопросы: