当前位置:编程学习 > JAVA >>

获取TOMCAT数据源惊奇的发现,DataSource是如何实例化的,求高手




问题一:如图一:得到的是数据源接口DataSource,为什么DEBUG(图二)的变量就指向到了子类的BasicDataSource?

问题二:为什么直接可以将DataSource这个接口实例化呢?

问题三:我现在想得到TOMCAT数据源里配置的信息,比如数据库地址、用户名等信息,该如何获取?

--------------------编程问答-------------------- 1 DataSource继承自BasicDataSource,你看你配置文件。
2 那不是实现的接口,就像Set s = new HashSet()一样。
3 还不知道,等楼下回答。 --------------------编程问答-------------------- 1、BasicDataSource 继承DataSource ,但是我直接这样写 
DataSource ds =(BasicDataSource)ctx.lookup("java:comp/env/jdbc/testDB"),居然报错,报的是
ClassCastException: Cannot cast org.apache.tomcat.dbcp.dbcp.BasicDataSource (id=150) to org.apache.tomcat.dbcp.dbcp.BasicDataSource,不明白怎么回事 --------------------编程问答-------------------- DataSource 是接口,BasicDataSource是类,怎么能跟BasicDataSource匹配呢。 --------------------编程问答--------------------
引用 2 楼 xujianchao 的回复:
1、BasicDataSource 继承DataSource ,但是我直接这样写 
DataSource ds =(BasicDataSource)ctx.lookup("java:comp/env/jdbc/testDB"),居然报错,报的是
ClassCastException: Cannot cast org.apache.tomcat.dbcp.dbcp.BasicDataSourc……


你的JVM中存在2个类,它们都是一样的package和类名字,但是他们不是同一个类. --------------------编程问答--------------------
引用 3 楼 dryzeng 的回复:
DataSource 是接口,BasicDataSource是类,怎么能跟BasicDataSource匹配呢。


BasicDataSource 继承DataSource  ,父类引用指向子类对象,怎么不能匹配 --------------------编程问答--------------------
引用 4 楼 araychou 的回复:
引用 2 楼 xujianchao 的回复:

1、BasicDataSource 继承DataSource ,但是我直接这样写
DataSource ds =(BasicDataSource)ctx.lookup("java:comp/env/jdbc/testDB"),居然报错,报的是
ClassCastException: Cannot cast org.apache.tomcat.……


你的意思是存在两个BasicDataSource,那该怎么解决能,我现在想得到BasicDataSource  --------------------编程问答--------------------
引用 5 楼 xujianchao 的回复:
引用 3 楼 dryzeng 的回复:
DataSource 是接口,BasicDataSource是类,怎么能跟BasicDataSource匹配呢。


BasicDataSource 继承DataSource  ,父类引用指向子类对象,怎么不能匹配


虽然是继承,类能强制转换成接口么?你这样写试试。
BasicDataSource ds =(BasicDataSource)ctx.lookup("java:comp/env/jdbc/testDB") --------------------编程问答--------------------
引用 7 楼 dryzeng 的回复:
引用 5 楼 xujianchao 的回复:

引用 3 楼 dryzeng 的回复:
DataSource 是接口,BasicDataSource是类,怎么能跟BasicDataSource匹配呢。


BasicDataSource 继承DataSource  ,父类引用指向子类对象,怎么不能匹配


虽然是继承,类能强制转换成接口么?你这样写试试。
BasicDataS……


这样写报错,我就是不明白为什么不能直接转换成子类BasicDataSource 一定要转换成DataSource 才是对的 --------------------编程问答--------------------
引用 6 楼 xujianchao 的回复:
你的意思是存在两个BasicDataSource,那该怎么解决能,我现在想得到BasicDataSource 


你的WEB-INF/lib/里是不是有tomcat-dbcp.jar? 如果有的花,删除掉.

如果你用eclipse,直接Ctrl+Shift+T.输入BasicDataSource,即可察看你的工程中什么地方存在BasicDataSource
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,