写了一个测试数据源连接数据库的java程序,但一直出错,其中数据源是在TOMCATE 5.0中配置的
我在jsp页面中测试是成功的,但使用java程序测试不行
代码如下:import java.sql.*;
import java.sql.Connection;import javax.sql.*;
import javax.naming.*;public class TestConnection {

DataSource ds=null;

public TestConnection() throws NamingException, ClassNotFoundException
{

Context context = new InitialContext();
ds =(DataSource)context.lookup("java:comp/env/jdbc/testSql");
}

public Connection getConnection() throws SQLException
{
return ds.getConnection();
}

public void insertShow() throws SQLException
{
Connection con;
PreparedStatement ps;
con = getConnection();
ps = con.prepareStatement("insert into book(bookName,publisher,price) values (?,?,?)");
ps.setString(1,"wfq1");
ps.setString(2,"publdf");
ps.setString(3,"pricesd");
ps.executeUpdate();
System.out.println("insert OK");
ps.close();
con.close();

}
public static void main(String [] args) throws NamingException
{
TestConnection tc = new TestConnection();
try {
tc.insertShow();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace(); }
}
}
错误信息如下:Exception in thread "main" javax.naming.NoInitialContextException: Need to speci
fy class name in environment or system property, or as an applet parameter, or i
n 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 TestConnection.main(TestConnection.java:29)请各位指教。

解决方案 »

  1.   

    不在WEB应用下,不能获得数据源jdbc/testSql连接,要在main中测试改成直连就没有问题了
      

  2.   

    哦,我这个问题我解决过
    你如下的调用时在容器外调用了,所以出错啊
    public   static   void   main(String   []   args)   throws   NamingException 

    TestConnection   tc   =   new   TestConnection(); 
    try   { 
    tc.insertShow(); 
    }   catch   (SQLException   e)   { 
    e.printStackTrace(); 

    } 通过页面访问正确,是因为那时在容器内调用,这是正确的
    你要研究一下容器内,容器外的问题