Context ctx = new InitialContext();
      DataSource ds =(DataSource) ctx.lookup("java:comp/env/jdbc/OracleDB");
      Connection conn = ds.getConnection();

解决方案 »

  1.   

    不用指定一下安装tomcat的ip地址吗?要不然到哪里lookup呀!
      

  2.   

    String url="localhost:8080";
    这是在Weblogic中的写法:
          properties = new Properties();
          properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
          properties.put(Context.PROVIDER_URL, url);
          //用户是否为空
          if (user != null) {
            properties.put(Context.SECURITY_PRINCIPAL, user);
            properties.put(Context.SECURITY_CREDENTIALS, password == null ? "" : password);
          }
          Context ctx= new InitialContext(properties);      DataSource ds =(DataSource) ctx.lookup("java:comp/env/jdbc/OracleDB");
          Connection conn = ds.getConnection();查找相关资料,把
     properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
    换成相应的tomcat对应的上下文工厂,应该就可以了。
      

  3.   

    package foo; import javax.naming.*; 
    import javax.sql.*; 
    import java.sql.*; public class DBTest {   String foo = "Not Connected"; 
      int bar = -1; 
         
      public void init() { 
        try{ 
          Context ctx = new InitialContext(); 
          if(ctx == null) 
              throw new Exception("Boom - No Context");       DataSource ds =  
                (DataSource)ctx.lookup( 
                   "java:comp/env/jdbc/TestDB");       if (ds != null) { 
            Connection conn = ds.getConnection(); 
                   
            if(conn != null)  { 
                foo = "Got Connection "+conn.toString(); 
                Statement stmt = conn.createStatement(); 
                ResultSet rst =  
                    stmt.executeQuery( 
                      "select id, foo, bar from testdata"); 
                if(rst.next()) { 
                   foo=rst.getString(2); 
                   bar=rst.getInt(3); 
                } 
                conn.close(); 
            } 
          } 
        }catch(Exception e) { 
          e.printStackTrace(); 
        } 
     } 
      

  4.   

    webLogic的我也有,上面的程序能测试过了吗?
      

  5.   

    原则上把"weblogic.jndi.WLInitialContextFactory"换成对应的tomcat的初始上下文生成库的名字即可。在weblogic上面测试过。但是tomcat的上下文工厂名称还没有查到。你找到了吗?
      

  6.   

    在Tomcat的某个webapp下写一个jsp页面,不要用这种方法,反正你最终也要往哪里挪!
      

  7.   

    大哥,我要用MVC模式,jsp只用于显示,访问数据库的部分放在bean中,所以要这样做!
      

  8.   

    找到了。tomcat的上下文工厂名称叫“org.apache.naming.java.javaURLContextFactory”
      

  9.   

    老兄,其实访问数据库的部分放在bean中,只要你部署好你的web应用,就照你最初的方法就可以连接数据源了。但是,如果你没有将当前应用部署到tomcat中,想在测试类中进行测试,可以不用数据源,直接用JDBC直连来测试嘛。