帮我看看这两种运行方式有什么不同

yingShisscWang 2012-01-02 09:34:59
我在tomcat里配了一个数据库连接池,我用两种方式去调用下面这段代码。第一种,我直接用main方法调用,第二种我在jsp
页面里面调用<%out.println(GetConnectionTest.show()%>。第二种成功了,但是第一种却显示没有找到源,下面是代码和错误信息:




package test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class GetConnectionTest {
public static void main(String[] args) {
GetConnectionTest.show();
}

public static String show(){
InitialContext ctx;
PreparedStatement pstmt = null;
Connection conn = null;
String sql = "select * from user";
String show = null;
try {
ctx = new InitialContext();
/*
* 在下面的字符串"java:comp/env/jdbc/course"中,*"java:comp/env/"是不变的,
* 而"jdbc/course"大家应该还记得自己之前起的数据源名称吧!
*/
//DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/TestDB");
Context context = (Context)ctx.lookup("java:comp/env/");
DataSource ds = (DataSource)context.lookup("jdbc/TestDB");
conn = ds.getConnection();
System.out.println("got conn");
pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
rs.last();
System.out.println("row:" + rs.getRow());
rs.first();
show = rs.getString(2) +"||" +rs.getInt(3);

} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return show;
}
}




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
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.lookup(Unknown Source)
at test.GetConnectionTest.show(GetConnectionTest.java:30)
at test.GetConnectionTest.main(GetConnectionTest.java:14)
...全文
34 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
MiceRice 2012-01-02
  • 打赏
  • 举报
回复
在Main函数里面的话,意味着你是独立启动的Java程序,也就意味着没有中间件给你提供JNDI服务,所以失败是正常的吧。Google下如何在独立Java程序中启用JNDI服务吧。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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