Hi experts:
After I deployed my application TOPS to Tomcat server(9.0.13)
on Linux box, and started the server, I got the following error:
1537 [main] FATAL connection.DatasourceConnectionProvider - Could not find
datasource: java:/comp/env/jdbc/TOPSDB
java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp2.BasicDataSource
cannot be cast to javax.sql.DataSource
at
org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52)
at
org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
at
org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56)
at
org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:366)
at
org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:60)
at
org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1859)
at
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1152)
at
com.usps.ibm.core.persistence.hibernate.HibernateUtil.buildSessionFactory(HibernateUtil.java:43)
at
com.usps.ibm.core.persistence.hibernate.HibernateInitializer.contextInitialized(HibernateInitializer.java:20)
at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4643)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5109)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1432)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1422)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at
java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944)
at
org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:831)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1432)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1422)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at
java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944)
at
org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:261)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at
org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at
org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:801)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Catalina.start(Catalina.java:695)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
com.usps.ibm.core.persistence.PersistenceInfrastructureException: Error
building Hibernate Session Factory.
at
com.usps.ibm.core.persistence.hibernate.HibernateUtil.buildSessionFactory(HibernateUtil.java:52)
at
com.usps.ibm.core.persistence.hibernate.HibernateInitializer.contextInitialized(HibernateInitializer.java:20)
at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4643)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5109)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1432)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1422)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at
java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944)
at
org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:831)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1432)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1422)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at
java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944)
at
org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:261)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at
org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at
org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:801)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Catalina.start(Catalina.java:695)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
Caused by: org.hibernate.HibernateException: Could not find datasource
at
org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:56)
at
org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
at
org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56)
at
org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:366)
at
org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:60)
at
org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1859)
at
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1152)
at
com.usps.ibm.core.persistence.hibernate.HibernateUtil.buildSessionFactory(HibernateUtil.java:43)
... 31 more
Caused by: java.lang.ClassCastException:
org.apache.tomcat.dbcp.dbcp2.BasicDataSource cannot be cast to
javax.sql.DataSource
at
org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52)
... 38 more
Cause:
org.hibernate.HibernateException: Could not find datasource
at
org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:56)
at
org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
at
org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56)
at
org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:366)
at
org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:60)
at
org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1859)
at
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1152)
at
com.usps.ibm.core.persistence.hibernate.HibernateUtil.buildSessionFactory(HibernateUtil.java:43)
at
com.usps.ibm.core.persistence.hibernate.HibernateInitializer.contextInitialized(HibernateInitializer.java:20)
at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4643)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5109)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1432)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1422)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at
java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944)
at
org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:831)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1432)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1422)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at
java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944)
at
org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:261)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at
org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at
org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:801)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Catalina.start(Catalina.java:695)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
Caused by: java.lang.ClassCastException:
org.apache.tomcat.dbcp.dbcp2.BasicDataSource cannot be cast to
javax.sql.DataSource
at
org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52)
... 38 more
When I worked with this project TOPS in Eclipse with apache-tomcat-9.0.13 in my
local computer, it works fine.
I have searched many question/answer about this issue on line for a couple of
weeks, here is the relevant content in my
/opt/TomCat/apache-tomcat-9.0.13/conf/server.xml:
<GlobalNamingResources>
<!-- Editable user database that can also be used by UserDatabaseRealm to
authenticate users -->
<Resource auth="Container"
driverClassName="oracle.jdbc.OracleDriver"
inactiveConnectionTimeout="120"
maxPoolSize="20" minPoolSize="1"
name="jdbc/TOPSDB"
password="g3td0wn" alternateUsernameAllowed="true"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(FAILOVER=on)(ADDRESS_LIST=(LOAD_BALANCE=ON)(ADDRESS=(PROTOCOL=tcp)(HOST=eagnmnmed4c2)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=eagnmnmed4c3)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=dtops.usps.gov)))"
username="TOPS_ADMIN"
validateConnectionOnBorrow="true"/>
</GlobalNamingResources>
<Context path="/TOPS-WEB" docBase="/opt/TomCat/tomcat/webapps/TOPS-WEB"
debug="0" privileged="true">
<Resource auth="Container"
driverClassName="oracle.jdbc.OracleDriver"
inactiveConnectionTimeout="120"
maxPoolSize="20" minPoolSize="1"
name="jdbc/TOPSDB"
password="g3td0wn"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(FAILOVER=on)(ADDRESS_LIST=(LOAD_BALANCE=ON)(ADDRESS=(PROTOCOL=tcp)(HOST=eagnmnmed4c2)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=eagnmnmed4c3)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=dtops.usps.gov)))"
username="TOPS_ADMIN"
validateConnectionOnBorrow="true"/>
</Context>
The relevant content my
/opt/TomCat/apache-tomcat-9.0.13/webapps/TOPS-WEB/WEB-INF/web.xml:
<resource-ref id="ResourceRef_1090589999592">
<res-ref-name>jdbc/TOPSDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
The relevant content my /opt/TomCat/apache-tomcat-9.0.13/conf/context.xml:
<Context>
<!-- Default set of monitored resources. If one of these changes, the -->
<!-- web application will be reloaded. -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<Resource auth="Container"
driverClassName="oracle.jdbc.OracleDriver"
inactiveConnectionTimeout="120"
maxPoolSize="20" minPoolSize="1"
name="jdbc/TOPSDB"
password="g3td0wn"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(FAILOVER=on)(ADDRESS_LIST=(LOAD_BALANCE=ON)(ADDRESS=(PROTOCOL=tcp)(HOST=eagnmnmed4c2)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=eagnmnmed4c3)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=dtops.usps.gov)))"
username="TOPS_ADMIN"
validateConnectionOnBorrow="true"/>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<ResourceLink name="jdbc/TOPSDB" global="jdbc/TOPSDB" auth="Container"
type="javax.sql.DataSource"/>
<CookieProcessor
className="org.apache.tomcat.util.http.Rfc6265CookieProcessor" />
</Context>
I also put a similar context.xml in
/opt/TomCat/apache-tomcat-9.0.13/webapps/TOPS-WEB/META-INF.
The relevant content my
/opt/TomCat/apache-tomcat-9.0.13/webapps/TOPS-WEB/WEB-INF/classes/hibernate.cfg.xml:
<hibernate-configuration>
<session-factory>
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
<property
name="connection.datasource">java:/comp/env/jdbc/TOPSDB</property>
</session-factory>
</hibernate-configuration>
I have tried to put different version of tomcat-dbcp.jar like
tomcat-dbcp-7.0.47.jar/ tomcat-dbcp-8.0.23.jar/ tomcat-dbcp-9.0.13.jar into
/opt/TomCat/apache-tomcat-9.0.13/lib, but not the same error occurred.
Your help is very much appreciated, thanks
Gary