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

Reply via email to