不知道这样是怎么用的,对javax.sql.Datasource不是很熟悉,但你这样的话,好像也应该在server.xml中配置啊!

解决方案 »

  1.   

    TO  zhutouzip(Speak out!-shyboy):
    是这样的,我的TOMCAT 已经通过正确的配置,能够直接和MYSQL连接了,并且取到正确数据。问题在于我希望能使用上面这个类SuperDataBaseAcc连接并取得数据,这里有个很重要的问题我可能没说清楚,这个类可能是在使用JNDI连接数据库,比起我测试时使用的直接连数据库要有用得多。
      

  2.   

    这就是使用连接池吗!
    只不过你将取得datasource的操作都封装在public class SuperDataBaseAcc中了!
    你在server.xml和web.xml中都配置好了吗?
      

  3.   

    server.xml片段:
      <GlobalNamingResources>
        <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
        <Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/>
        <Resource name="jdbc/mysql" type="javax.sql.DataSource"/>
        <ResourceParams name="UserDatabase">
          <parameter>
            <name>factory</name>
            <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
          </parameter>
          <parameter>
            <name>pathname</name>
            <value>conf/tomcat-users.xml</value>
          </parameter>
        </ResourceParams>
        <ResourceParams name="jdbc/mysql">
          <parameter>
            <name>maxWait</name>
            <value>5000</value>
          </parameter>
          <parameter>
            <name>maxActive</name>
            <value>4</value>
          </parameter>
          <parameter>
            <name>password</name>
            <value></value>
          </parameter>
          <parameter>
            <name>url</name>
            <value> jdbc:mysql://localhost:3306/JXDB?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=GB2312
    </value>
          </parameter>
          <parameter>
            <name>driverClassName</name>
            <value>com.mysql.jdbc.Driver</value>
          </parameter>
          <parameter>
            <name>maxIdle</name>
            <value>2</value>
          </parameter>
          <parameter>
            <name>username</name>
            <value>root</value>
          </parameter>
        </ResourceParams>
      </GlobalNamingResources>
      

  4.   

    应该是正确的,因为我是通过TOMCAT图形界面设置的。并且通过直接连接已经取得数据了。我现在的问题是,用SuperDataBaseAcc始终连接不上数据库,一直报错,报错内容在LOG中,我也贴出来了,可以看出是它没法建立连接,但是应该怎么改呢?我猜测问题很可能出在config.properties中的设置或许不对,但也可能有其他原因,但SuperDataBaseAcc本身应该不存在问题,因为这个代码ORACLE下运行可以完全正常的工作
      

  5.   

    不知道你怎么操纵config.properties文件的,tomcat中的连接池一般按下面步骤取得:
      Context ctcontext=new InitialContext();
      Context envcontext=(Context)ctcontext.lookup("java:/comp/env");
      ds=(DataSource)envcontext.lookup(JNDI);
    即先要在java:/comp/env下取得一个context,然后再用你指定的JNDI去查询数据源!
    你的操作肯定没有取得数据源,所以会出现上述异常!
      

  6.   

    我记得在WEBLOGIC中只需要设置数据源和连接池就可以了,我以前没用过TOMCAT,所以不晓得怎么连,你能给点建议吗?的确,我直接建立连接时,页面上也有你给的这段代码,但是如果我依然想使用SuperDataBaseAcc,应该如何做?修改它,还是什么别的方法
      

  7.   

    你在web.xml中配置了没就提示没有数据源     <resource-ref>
            <description>DB Connection</description>
            <res-ref-name>jdbc/business</res-ref-name>--->jndi名字
            <res-type>javax.sql.DataSource</res-type>
            <res-auth>Container</res-auth>--->由容器进行管理
        </resource-ref>
      

  8.   

    还要在web.xml中设置....
    如 yxhzj(余华[学习J2EE中]) 说的..