TO zhutouzip(Speak out!-shyboy): 是这样的,我的TOMCAT 已经通过正确的配置,能够直接和MYSQL连接了,并且取到正确数据。问题在于我希望能使用上面这个类SuperDataBaseAcc连接并取得数据,这里有个很重要的问题我可能没说清楚,这个类可能是在使用JNDI连接数据库,比起我测试时使用的直接连数据库要有用得多。
这就是使用连接池吗! 只不过你将取得datasource的操作都封装在public class SuperDataBaseAcc中了! 你在server.xml和web.xml中都配置好了吗?
是这样的,我的TOMCAT 已经通过正确的配置,能够直接和MYSQL连接了,并且取到正确数据。问题在于我希望能使用上面这个类SuperDataBaseAcc连接并取得数据,这里有个很重要的问题我可能没说清楚,这个类可能是在使用JNDI连接数据库,比起我测试时使用的直接连数据库要有用得多。
只不过你将取得datasource的操作都封装在public class SuperDataBaseAcc中了!
你在server.xml和web.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&useUnicode=true&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>
Context ctcontext=new InitialContext();
Context envcontext=(Context)ctcontext.lookup("java:/comp/env");
ds=(DataSource)envcontext.lookup(JNDI);
即先要在java:/comp/env下取得一个context,然后再用你指定的JNDI去查询数据源!
你的操作肯定没有取得数据源,所以会出现上述异常!
<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>
如 yxhzj(余华[学习J2EE中]) 说的..