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)
Для дано решение этой же проблемы в 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" />
Заводской источник данных по умолчанию в 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