帮我看看这两种运行方式有什么不同
我在tomcat里配了一个数据库连接池,我用两种方式去调用下面这段代码。第一种,我直接用main方法调用,第二种我在jsp
页面里面调用<%out.println(GetConnectionTest.show()%>。第二种成功了,但是第一种却显示没有找到源,下面是代码和错误信息:
页面里面调用<%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)
...全文
相关推荐
同一款软件却有两种方式来帮你推广
同一款软件却有两种方式来帮你推广,放开你的双手进行推广吧~
docker跨主机通信的两种方式
docker跨主机通信的两种方式。路由方式和网络桥接的实现
String类型两种不同实例化方式
为软件开发者弄清楚,明白
机器学习模型部署的两种方式
机器学习模型部署的两种方式 ,There are two very different ways to deploy ML models。
c++调用dll的两种方式
c++调用dll的两种方式c++调用dll的两种方式c++调用dll的两种方式c++调用dll的两种方式c++调用dll的两种方式c++调用dll的两种方式c++调用dll的两种方式


Web 开发
