Chris:
I did what you suggested, that is to remove all drivers from the
application's WEB-INF/lib directory and leave the one in Tomcat's lib/
directory.
Now the error "FATAL connection.DatasourceConnectionProvider - Could
not find datasource: java:/comp/env/jdbc/TOPSDB " and
" java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp2.BasicDataSource
cannot be cast to javax.sql.DataSource " is gone.
I am going to do more cleaning and re-arrangement to the jars.
Thanks
Gary
-----Original Message-----
From: Christopher Schultz [mailto:[email protected]]
Sent: Tuesday, March 26, 2019 10:43 AM
To: [email protected]
Subject: Re: [EXTERNAL] Re: Could not find datasource:
java:/comp/env/jdbc/TOPSDB when start Tomcat 9.0.13
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Gary,
On 3/25/19 12:08, Hua, Gary - Saint Louis, MO - Contractor wrote:
> Olaf:
>
> Thanks for the input. I removed jdbc2_0-stdext.jar and
> tomcat-dbcp.jar from
> /opt/TomCat/apache-tomcat-9.0.13/webapps/TOPS-WEB/WEB-INF/lib and
> did some cleaning on /opt/TomCat/apache-tomcat-9.0.13/lib, now
> that is my lib folder looks like:
Wow, this must be a very old web application. You still have some cleaning-up
to do.
> atadmin@eagnmnmed1f45:/opt/TomCat/apache-tomcat-9.0.13/webapps/TOPS-WE
B/WEB-INF/lib>ls
> -l total 20648 -rwxrwxrwx 1 atadmin atadmin 433164 Dec 17 17:47
> antlr-2.7.5H3.jar -rwxrwxrwx 1 atadmin atadmin 281998 Dec 17 17:45
> cglib-2.1.jar
Super old.
[...]
> -rwxrwxrwx 1 atadmin atadmin 16777 Dec 17 17:45 asm-attrs.jar
> -rwxrwxrwx 1 atadmin atadmin 26360 Dec 17 17:45 asm.jar
> -rwxrwxrwx 1 atadmin atadmin 188671 Dec 17 17:47
> commons-beanutils.jar -rwxrwxrwx 1 atadmin atadmin 165119 Dec 17
> 17:45
commons-collections.jar
> -rwxrwxrwx 1 atadmin atadmin 168446 Dec 17 17:47
> commons-digester.jar -rwxrwxrwx 1 atadmin atadmin 26388 Dec 17
> 17:47 commons-logging.jar -rwxrwxrwx 1 atadmin atadmin 84462 Dec
> 17 17:47 commons-validator.jar -rwxrwxrwx 1 atadmin atadmin
> 153115 Dec 17 17:45 jdom.jar -rwxrwxrwx 1 atadmin atadmin 8812
> Dec 17 17:45 jta.jar -rwxrwxrwx 1 atadmin atadmin 367444 Dec 17
> 17:45 log4j.jar
I'm always suspicious of library JAR files that have no version number. You
might want to take a look at what these are and re-name them appropriately.
> -rwxrwxrwx 1 atadmin atadmin 1196109 Dec 17 17:47 classes12.jar
classes12.jar is Oracle's JDBC driver written for Java 1.2. I'm fairly sure
that was hand-coded by Hammurabi himself. If you are indeed using Oracle DB,
you need to upgrade to a library version released during this century.
> -rwxrwxrwx 1 atadmin atadmin 3698857 Mar 15 15:32 ojdbc7.jar
This is a second Oracle JDBC driver. Do you need both of them?
> -rwxrwxrwx 1 atadmin atadmin 4604132 Dec 17 17:45
> com.ibm.ws.webcontainer.jar
This is a WebSphere library. Presumably, you have left WebSphere behind in
favor of Tomcat? Or maybe you need some service that WS provides and you have
taken it with you?
> -rwxrwxrwx 1 atadmin atadmin 205318 Mar 19 11:20
> commons-dbcp2-2.6.0.jar -rwxrwxrwx 1 atadmin atadmin 70604 Dec 17
> 17:45 commons-fileupload-1.3.3.jar -rwxrwxrwx 1 atadmin atadmin
> 214788 Dec 17 17:45 commons-io-2.6.jar -rwxrwxrwx 1 atadmin
> atadmin 207723 Dec 17 17:47 commons-lang-2.1.jar -rwxrwxrwx 1
> atadmin atadmin 315805 Dec 17 17:47 commons-lang3-3.1.jar
> -rwxrwxrwx 1 atadmin atadmin 210432 Dec 17 17:45
> displaytag-1.1.jar -rwxrwxrwx 1 atadmin atadmin 12590 Dec 17
> 17:45 displaytag-export-poi-1.1.jar -rwxrwxrwx 1 atadmin atadmin
> 312509 Dec 17 17:45 dom4j-1.5.2.jar -rwxrwxrwx 1 atadmin atadmin
> 47531 Dec 17 17:45 ehcache-1.1.jar -rwxrwxrwx 1 atadmin atadmin
> 1925498 Dec 17 17:45 hibernate3.jar -rwxrwxrwx 1 atadmin atadmin
> 65425 Dec 17 17:45 jakarta-oro.jar
> -rwxrwxrwx 1 atadmin atadmin 1979523 Dec 17 17:41 javaee-api-8.0.jar
I'm fairly sure this should be removed. Tomcat provides all of the APIs that
you need. While this may be a compile-time dependency, everything should be
provided at runtime by Tomcat.
> -rwxrwxrwx 1 atadmin atadmin 414240 Dec 17 16:29 jstl-1.2.jar
> -rwxrwxrwx 1 atadmin atadmin 105355 Dec 17 17:45
> old_lcms-webtools.jar -rwxrwxrwx 1 atadmin atadmin 795231 Dec 17
> 17:45 poi-2.5-final-20040302.jar -rwxrwxrwx 1 atadmin atadmin
> 55210 Dec 17 17:45 poi-contrib-2.5-final-20040302.jar -rwxrwxrwx 1
> atadmin atadmin 188942 Dec 17 17:45
> poi-scratchpad-2.5-final-20040302.jar -rwxrwxrwx 1 atadmin atadmin
> 475943 Dec 17 17:45 proxool-0.8.3.jar -rwxrwxrwx 1 atadmin atadmin
> 543706 Dec 17 17:47 struts.jar
Aha, I see. You are running Struts 1 which requires ancient versions of certain
libraries.
> -rwxrwxrwx 1 atadmin atadmin 495271 Dec 17 17:47
> Struts-Layout.jar -rwxrwxrwx 1 atadmin atadmin 68046 Dec 17 17:47
> struts-menu-2.4.3.jar -rwxrwxrwx 1 atadmin atadmin 39427 Dec 17
> 17:47 taglibs-request.jar -rwxrwxrwx 1 atadmin atadmin 44061 Dec
> 17 17:45 USPS-Framework-1.0.8-alpha.jar -rwxrwxrwx 1 atadmin
> atadmin 834966 Dec 17 17:45 xercesImpl.jar
>
>
> atadmin@eagnmnmed1f45:/opt/TomCat/apache-tomcat-9.0.13/lib>ls -l
> total 13308 -rwxrwxrwx 1 atadmin atadmin 12966 Nov 2 09:29
> annotations-api.jar -rwxrwxrwx 1 atadmin atadmin 54415 Nov 2
> 09:29 catalina-ant.jar -rwxrwxrwx 1 atadmin atadmin 120721 Nov 2
> 09:29 catalina-ha.jar -rwxrwxrwx 1 atadmin atadmin 1652907 Nov 15
> 10:49 catalina.jar -rwxrwxrwx 1 atadmin atadmin 1653788 Nov 2
> 09:29 catalina.jar.20181115-1049
Remove this.
> -rwxrwxrwx 1 atadmin atadmin 78634 Nov 2 09:29
> catalina-storeconfig.jar -rwxrwxrwx 1 atadmin atadmin 338876 Nov
> 2 09:29 catalina-tribes.jar -rwxrwxrwx 1 atadmin atadmin 2769774
> Nov 2 09:29 ecj-4.7.3a.jar -rwxrwxrwx 1 atadmin atadmin 87515
> Nov 2 09:29 el-api.jar -rwxrwxrwx 1 atadmin atadmin 167490 Nov
> 2 09:29 jasper-el.jar -rwxrwxrwx 1 atadmin atadmin 557374 Nov 2
> 09:29 jasper.jar -rwxrwxrwx 1 atadmin atadmin 27900 Nov 2 09:29
> jaspic-api.jar -rwxrwxrwx 1 atadmin atadmin 63167 Nov 2 09:29
> jsp-api.jar -rwxrwxrwx 1 atadmin atadmin 3698857 Mar 12 17:51
> ojdbc7.jar
This is duplicated from your web application. If Tomcat is configuring your
JDBC connector for you (using a <Resource> configuration) then you probably
want to put your JAR file *here* and not in the applicatio n.
> -rwxrwxrwx 1 atadmin atadmin 282576 Nov 2 09:29 servlet-api.jar
> -rwxrwxrwx 1 atadmin atadmin 11212 Nov 2 09:29 tomcat-api.jar
> -rwxrwxrwx 1 atadmin atadmin 845744 Nov 2 09:29 tomcat-coyote.jar
> -rwxrwxrwx 1 atadmin atadmin 307435 Mar 19 17:42
> tomcat-dbcp-9.0.13.jar
Is this not what came with Tomcat? You should not replace any of Tomcat's
libraries without a *very* good reason.
> -rwxrwxrwx 1 atadmin atadmin 65303 Nov 2 09:29
> tomcat-i18n-es.jar -rwxrwxrwx 1 atadmin atadmin 39235 Nov 2
> 09:29 tomcat-i18n-fr.jar -rwxrwxrwx 1 atadmin atadmin 42125 Nov
> 2 09:29 tomcat-i18n-ja.jar -rwxrwxrwx 1 atadmin atadmin 12166
> Nov 2 09:29 tomcat-i18n-ru.jar -rwxrwxrwx 1 atadmin atadmin
> 36029 Nov 2 09:29 tomcat-jni.jar -rwxrwxrwx 1 atadmin atadmin
> 165171 Nov 2 09:29 tomcat-util.jar -rwxrwxrwx 1 atadmin atadmin
> 208966 Nov 2 09:29 tomcat-util-scan.jar -rwxrwxrwx 1 atadmin
> atadmin 230254 Nov 2 09:29 tomcat-websocket.jar -rwxrwxrwx 1
> atadmin atadmin 38022 Nov 2 09:29 websocket-api.jar
It would be well worth your while to run OWASP's dependency-checker against
your applications dependencies (libraries). It will liekly scare the hell out
of you. Or, it should.
I suspect your problems are from:
1. Two drivers loaded at application level 2. One driver loaded at Tomcat level
I would remove all drivers from the application's WEB-INF/lib directory and
leave the one in Tomcat's lib/ directory.
- -chris
> -----Original Message----- From: Olaf Kock [mailto:[email protected]]
> Sent: Monday, March 25, 2019 1:56 AM
> To: [email protected] Subject: [EXTERNAL] Re: Could not find
> datasource: java:/comp/env/jdbc/TOPSDB when start Tomcat 9.0.13
>
>
>
> On 25.03.19 03:41, Hua, Gary - Saint Louis, MO - Contractor wrote:
>> 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(Datas
o
>>
>>
urceConnectionProvider.java>
>> ...
>>
>> 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.
>
> One way or another, the last sentence most likely is the most relevant
> information, and key to solving your problem: Whenever a Java class
> can't be typecast to its legitimate superclass or interface, this is a
> clear sign that the superclass or interface can be found twice on the
> classpath.
>
> The error message only contains the class name, not the classloader,
> so the root cause is effectively hidden. Make sure that
> javax.sql.DataSource is nowhere to be found in your app's WEB-INF/lib,
> and only once in tomcat's lib directory.
>
> Olaf
>
> ---------------------------------------------------------------------
>
>
To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
> ---------------------------------------------------------------------
>
>
To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
-----BEGIN PGP SIGNATURE-----
Comment: Using GnuPG with Thunderbird - https://www.enigmail.net/
iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAlyaSGgACgkQHPApP6U8
pFjyPA/9GNnf9FVkSL3yly8ebDaDy405PfyEdAW1YfYBqYyDJzjQV9f7xeKj1evD
hQe49VzgnyfU6m/JF08CZHtD5lmXFBGScgL6y2WHsyeR4cBZPUDtTEatJbBCz3E6
wsI/kGE1AV3t6biKnKtlwFcrNUwddK191SCM8MysdTlwiHjpaACCUGKygEYZM5kn
WenMweDQI0KeRipHoMx80VoBrIHtSDBZpfawLsn1g52qOmKg5+HmRCfULPqdXEcA
OKPuSHX2y4IkyZqW2SOYRkAshcCTEBRjJMRF8EVJSKzIyeo/lhpkT2eZRLaONpq+
Fqd9cRQOH+NOP85iIQFgjLBWVGqj7xleGyrE4QbcNNKkQSAGvXtoGBCDNsqgved1
pIDxtTVdJ0izuIYROrOFqB1EYk/JaSWOLBodmqjI5gchSXNyf3AzVvEbxmoPyLq+
j0t6IYYuPuy0b0Rm2mKSsPVVOMs5RDRi59DrGQZzsXbuRAM4wOEx1jcx4IvnEaoQ
v2Zc5fYt+9m7phmg6lF2rS17BdFskJW+VrvqTA+E8f6ugj+owWtuZTE/66Ggaxgx
A9/mOBeIw2+TBr3SAfWrrJZHHBIymFH+i3hk+u5xMxyP1IFDj6w1PGGdUnq0vpp0
s1WXWqxsB50FWtXwzwo2Y37UiBZeaCMWpQEdkhwKb2vbPjFBDyg=
=1vHu
-----END PGP SIGNATURE-----
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]