sos!!!小弟求救!!关于JDNI的问题。

cliu0207 2006-05-02 06:58:26
最近正在学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分略表谢意!!
...全文
92 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangxiaoan 2006-05-03
  • 打赏
  • 举报
回复
第一,要加载MYSQL的驱动,放到COMMON\lib下。
第二,ctx.lookup("jdbc/mysql/sql_test");
cliu0207 2006-05-03
  • 打赏
  • 举报
回复
没人回答我么?
自己顶一下.
cliu0207 2006-05-03
  • 打赏
  • 举报
回复
我把驱动放到COMMON\LIB下了啊,而且还放到WEB-INF下了。
貌似应该是ctx.lookup("java:comp/env/jdbc/mysql/sql_test");吧?我看到很多网上的都是这样的啊。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧