各位老大,用tomcat的连接池在application获得连接的问题

06-03-19 Q088
public class DBConnection {

/**

* 构造方法

*/

public DBConnection(){

}

/** 创建连接

*/

public Connection createConnection() {

try{

Context ctx = new InitialContext();

DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/sql");

if( ds != null){

return ds.getConnection();

}

}catch(NamingException e){

return null;

}catch(SQLException e){

return null;

}

return null;

}

//测试方法

public static void main(String[] args){

DBConnection dbc = new DBConnection();

try{

Connection con = dbc.createConnection();

System.out.println(con.toString());

PreparedStatement ptmt =

con.prepareStatement("select * from userinfo");

ResultSet rst = ptmt.executeQuery();

while(rst.next()){

System.out.println(rst.getString(1));

System.out.println(rst.getString(2));

}

rst.close();

ptmt.close();

con.close();

}catch(Exception e){

e.printStackTrace();

}

}

各为老大,大哥,大哥大,前辈

我用的是tomcat的内置连接池

在jsp页面中我用上面的方法测试可以得到连接访问数据库

但是在applecation中我用这个main()方法测试,却得不到连接

我设断点调试,

DataSource ds = (DataSource)ctx.looku("java:comp/env/jdbc/sql");

在这一句出现了异常,返回null

detailMessage: 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

请各为老大指点,为什么我在jsp页面中可以获得连接,而用applecation的main方法却不行呢?

banq
2006-03-20 11:39
因为application和Jsp区别是:前者无容器;后者有Web容器支持,你需要 首先配置application连接JDNI Server, 然后才能在application中调用JNDI Server

Q088
2006-03-20 12:52
原来如此

多谢谢benq老师

猜你喜欢