- UID
- 18
- 帖子
- 306
- 积分
- 194
- 紫菀
- 0 朵
- 花瓣
- 308 片
- 花蕊
- 36 朵
- 野草莓
- 13 个
- 蒲公英
- 16 朵
- 社区等级
- 13 级
- 在线时间
- 38 小时
- 注册时间
- 2006-7-18
- 蜗居何地
- 大陆
- 登录状态
-
当前离线
|
楼主
发表于 2009-3-26 11:12
| 只看该作者
第二次配JNDI 报了个让人疯狂了三小时的错误 麻烦高手给瞅瞅
大概功能就是 使用JNDI 获取 数据源
/*
* dong.jndi.GetDataBean.java
* 功能:使用JNDI获取数据源
*
* Cannot create JDBC driver of class '' for connect URL 'jdbc:sqlserver://localhost:1433;DataBaseName=restrant' 数据库异常
*/
package dong.jndi;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
// 导入使用JNDI和数据源所需要的包
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import ch03.FoodBean;
public class GetDataBean {
private Connection connection;
private PreparedStatement titlesQuery;
private ResultSet results;
// 返回FoodBeans列表
public List getFoods() {
List foodsList = new ArrayList();
// 获取餐品列表
try {
// 用JNDI读取 tomcat安装目录/conf/context.xml文件中的数据源
Context ic = new InitialContext();
DataSource source = (DataSource) ic
.lookup("java:comp/env/jdbc/restrant");
// 通过JNDI读取的数据源建立数据库连接
connection = source.getConnection();
titlesQuery = connection
.prepareStatement("SELECT foodID, foodName, remark, "
+ "foodPrice, description, foodImage "
+ "FROM foodInfo ORDER BY foodID");
ResultSet results = titlesQuery.executeQuery();
// 读取行数据
while (results.next()) {
FoodBean food = new FoodBean();
food.setFoodId(results.getString("foodID"));
food.setFoodName(results.getString("foodName"));
food.setRemark(results.getString("remark"));
food.setFoodPrice(results.getDouble("foodPrice"));
food.setDescription(results.getString("description"));
food.setFoodImage(results.getString("foodImage"));
foodsList.add(food);
}
}
// 处理数据库异常
catch (SQLException exception) {
System.out.println(exception.getMessage() +" 数据库异常");
exception.printStackTrace();
}
// 处理JNDI查找异常
catch (NamingException namingException) {
System.out.println("JNDI " + namingException.getMessage());
namingException.printStackTrace();
}
// 释放资源
finally {
// 关闭结果集
try {
if (results != null) {
results.close();
results = null;
}
// 处理结果集关闭异常
} catch (SQLException e) {
e.printStackTrace();
}
// 关闭数据库连接
try {
if (connection != null && (!connection.isClosed())) {
connection.close();
}
// 处理数据库连接关闭异常
} catch (SQLException sqlEx) {
sqlEx.printStackTrace();
}
}
return foodsList;
}
}
Web-INF 下 web.xml :
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<description>描述</description>
<display-name>显示的名字</display-name>
<!-- servlet-name要与下面servlet-mapping下的servlet-name保持一致 -->
<servlet-name>Welcome</servlet-name>
<!-- servlet-class对应着servlet类文件在程序中的位置 -->
<servlet-class>ch02.Welcome</servlet-class>
</servlet>
<servlet>
<description>描述</description>
<display-name>显示的名字</display-name>
<servlet-name>AddFoodToCart</servlet-name>
<servlet-class>ch03.AddFoodToCart</servlet-class>
</servlet>
<servlet>
<description>描述</description>
<display-name>显示的名字</display-name>
<servlet-name>OrderServlet</servlet-name>
<servlet-class>ch03.OrderServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Welcome</servlet-name>
<!-- url-pattern设定当前Servlet在浏览器运行的url -->
<url-pattern>/Welcome</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AddFoodToCart</servlet-name>
<url-pattern>/servlet/AddFoodToCart</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>OrderServlet</servlet-name>
<url-pattern>/servlet/OrderServlet</url-pattern>
</servlet-mapping>
<resource-ref>
<res-ref-name>jdbc/restrant</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<welcome-file-list>
<welcome-file>/ch06/login.jsp</welcome-file>
</welcome-file-list>
</web-app>
Tomcat 6.0 conf下 context.xml:
<Resource name="jdbc/restrant"
auth="Container" type="javax.sql.DataSource" maxActive="100" maxldle="30"
maxWait="1000" username="sa" password="0123"
diverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;DataBaseName=restrant"/>
lib下 加 sql server 2005数据库驱动 正常
高手期待中。。。。。 |
|