数据库连接池异常 NoInitialContextException

hello123qwe 2009-08-11 02:26:14
数据库连接池异常NoInitialContextException
项目名和数据库名是 myhb ,用户名和密码是:root

1 Tomcat 根目录下conf/context.xml
<Resource name="jdbc/myhb" anth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="300" maxWait="10000"
username="root" password="root"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;databasename=myhb"
></Resource>

2 项目下的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" .......
<resource-ref>
<description>myhb DataSource</description>
<res-ref-name>jdbc/myhb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>

3 Tomcat的lib下添加了sqljdbc.jar

4 类
public class ConnectionManager {
Connection con=null;
public Connection getConn(){
try {
Context ct=new InitialContext();
DataSource ds=(DataSource)ct.lookup("java:comp/env/jdbc/myhb"); //报错行
con=ds.getConnection();
} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
}
public class ProductsDao extends BaseJdbcDao{
ConnectionManager cm=new ConnectionManager();
public Product get(int id)
{
Product p=null;
try {
String sql="select * from Product where id=?";
con=cm.getConn();
ps=con.prepareStatement(sql);
ps.setInt(0,id);
rs=ps.executeQuery();
while(rs.next())
{
p=new Product();
p.setId(rs.getInt(1));
p.setImage(rs.getString(2));
p.setIntroduce(rs.getString(3));
p.setName(rs.getString(4));
p.setPrice(rs.getDouble(5));
}
} catch (SQLException e) {
e.printStackTrace();
}

return p;
}
}

Main:
ProductsDao pd=new ProductsDao();
System.out.println(pd.get(1).getName());

运行后错误信息:
javax.naming.NoInitialContextException: Need to specify class name in environment or

system property, or as an applet parameter, or in an application resource file:

java.naming.factory.initial
...全文
225 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hello123qwe 2009-08-12
  • 打赏
  • 举报
回复
IE里运行是对的,不能在Main()中运行,应该是那对象没有初始化吧,已经解决了
muqingren1978 2009-08-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 whw1984 的回复:]
DataSource ds=(DataSource)ct.lookup("java:comp/env/jdbc/myhb");

测试过jdbc/myhb能连接吗?
[/Quote]


估计 悬
WHW1984 2009-08-11
  • 打赏
  • 举报
回复
DataSource ds=(DataSource)ct.lookup("java:comp/env/jdbc/myhb");

测试过jdbc/myhb能连接吗?

67,513

社区成员

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

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