exception javax.servlet.ServletException: org.apache.tomcat.dbcp.dbcp.BasicDataSource cannot be cast to sun.jdbc.odbc.ee.DataSource
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.basemodel.filters.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:40)
root cause java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp.BasicDataSource cannot be cast to sun.jdbc.odbc.ee.DataSource
com.basemodel.basedb.DbConnection.getConnection(DbConnection.java:25)
com.model.a.MenuTypeAction.search(MenuTypeAction.java:20)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
com.basemodel.baseaction.BaseAction.execute(BaseAction.java:45)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.basemodel.filters.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:40)
请问高手怎么解决这个问题?

解决方案 »

  1.   

    好像是没有找到源的问题。
    看看源的配置
    http://blog.chinaunix.net/u/21684/showart_270377.html
      

  2.   

    转换错误  应该你配制的问题
    如果没找到源的话 是nullpoint异常  
    估计是配错了源
      

  3.   

    我的CONTEXT.XML配置是:
    <Context
    docBase="/win"
    path="win"
    crosscContext="true" 
    reloadable="true">
    <Resource
    name="jdbc/crm"
    auth="Container"
    type="javax.sql.DataSource"
    driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
    url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=SimpleCRM;"
    username="sa"
    password=""
    maxActive="10"
    maxIdle="10"
    maxWait="10000"
    removeAbandoned="true"
    removeAbandonedTimeout="90"
    logAbandoned="true" />
    </Context>
    web.xml文件:
    <resource-ref>
    <res-ref-name>jdbc/crm</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
    </resource-ref>
      

  4.   

    sun.jdbc.odbc.ee.DataSource ? 你的代码用ODBC 吗? 改成用纯JDBC的吧!配置没看到问题,应该是代码的lookup部分错了!
      

  5.   

    我用的是JDBC连接方式啊,代码如下:
    public static Connection getConnection(String dbname) throws  SQLException{
    Context ctx = null;
    DataSource ds = null;
    try {
    ctx = new InitialContext();
    ds = (DataSource)ctx.lookup("java:comp/env/jdbc/" + dbname);
    } catch (NamingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return ds.getConnection();
    }
      

  6.   

    我已经解决了,是在引用包时引用了ODBC的数据源包