sos!!!小弟求救!!关于JDNI的问题。
最近正在学JDNI,用TOMCAT进行的数据源配置,但按照书上做的以后,却还是不行。先求各位大哥指点.
先配置Server.xml,在<Host>和</Host>之间加上如下代码:
<Context path="/ch14" docBase="ch14" debug="0" reloadable="true" crossContext="true">
<Resource name="jdbc/mysql/sql_test"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
driverClassName="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost/sql_test"
username="root"
password="liucheng0207"
maxActive="20"
maxIdle="10"
maxWait="-1"/>
</Context>
然后配置WEB-INF下的Web.xml文件,代码如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<description>JSP中的高级数据库应用实例</description>
<resource-ref>
<description>DataSource</description>
<res-ref-name>jdbc/mysql/sql_test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
给出一个连接数据库的类:
package ch14.datasource;
import javax.sql.DataSource;
import javax.naming.*;
import java.sql.*;
public class SqlTestDS {
private static DataSource ds = null;
static {
init();
}
private static void init() {
try {
// 1、创建命名服务环境
Context ctx = new InitialContext();
if (ctx == null)
throw new Exception("No Context");
// 2、从JNDI中查询数据源对象
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mysql/sql_test");
} catch (Exception e) {
e.printStackTrace();
}
}
// 将构造函数定义为private权限是为了保证全局只有一个SqlTestDS实例
// 也就是实现了单例模式
private SqlTestDS() {
}
public static Connection getConnection() throws SQLException {
if (ds == null) {
throw new SQLException("数据源对象为空!");
} else {
// 3、从数据源中获取数据库连接
return ds.getConnection();
}
}
}
最后在JSP网页中连接数据库,查询数据.
但显示出来的网页中并无应有的数据,小弟觉得很奇怪,不知道哪里出错了,因为这里的代码基本是随书的光盘上的。
问题二:难道配置数据源的方法就只有在服务器中吗?有没有其他的方法?
问题三:有没有关于学习JNDI的好的网站?
三个问题,望大哥们指点.小弟分不多了,30分略表谢意!!