本人不是学JAVA的,但是给我了一个网站是JSP做的,里面有关连接数据库、获取数据源的我不懂,在页面里面有这么一行代码  : ds = (DataSource)initialcontext.lookup("java:comp/env/jdbc/ejnqdbcon");大概意思我看就是把数据源赋给 ds  了,但是我不懂后面的是什么意思,括号里的是什么意思。我怎么找到括号里面"ejnqdbcon"的位置。
initialcontext.lookup 是什么方法?

解决方案 »

  1.   

    ejnqdbcon是关于连接池配置文件的一个名称,initialcontext.lookup是加载那些连接信息
      

  2.   

    jdbc/ejnqdbcon连接池里配的JNDI名字,就是通过它取得数据源的
    F:\Tomcat\apache-tomcat-6.0.16\conf找到context.xml文件,打开找到<Resource.........name="这里就是那个名"
      

  3.   

    就像楼上所说
    就是让你找下路径
    jdbc  数据库连接池
      

  4.   

    谢谢大家了,不好意思,我用的是TOMCAT5.0 ,我咨询了原来网站管理人员,他们说也用的是TOMCAT5.0.我在我的“C:\Tomcat 5.0\conf”下找不到context.xml文件。
    我的QQ54025782,
    我现在的问题是:网站源代码拿到手了,数据库也装好了(SQL Server 2005),可是网站还是跑不起来,网站页面出来了,可是没有任何数据被读取。我现在就是怀疑是数据库连接的问题。网站主页面index.jsp有这样的代码:<jsp:useBean id="db" scope="page" class="mydb.ejnqdb" />.........<%
    String weather="";
    ResultSet rs=null;
    rs=db.executeQuery("select top 1 * from weather");
    if (rs!=null){
    if (rs.next()) weather=rs.getString("memo");
    rs.close();
    }
    %>
    以下是C:\Tomcat 5.0\webapps\ejnq\WEB-INF\classes\mydb\ejnqdb.class 文件反编译后的代码:
    package mydb;import java.io.PrintStream;
    import java.sql.*;
    import javax.naming.InitialContext;
    import javax.sql.DataSource;public class ejnqdb
    {    private DataSource ds;
        private ResultSet rs;
        private PreparedStatement stat;
        private Connection con;
        private Statement stmt;    public ejnqdb()
            throws Exception
        {
            ds = null;
            rs = null;
            stat = null;
            con = null;
            stmt = null;
            InitialContext initialcontext = new InitialContext();
            if(initialcontext == null)
            {
                throw new Exception("No Context");
            } else
            {
                ds = (DataSource)initialcontext.lookup("java:comp/env/jdbc/ejnqdbcon");
                return;
            }
        }    public void closeCon()
        {
            try
            {
                if(rs != null)
                {
                    rs.close();
                    rs = null;
                }
            }
            catch(Exception exception)
            {
                exception.printStackTrace();
            }
            try
            {
                if(stat != null)
                {
                    stat.close();
                    stat = null;
                }
            }
            catch(Exception exception1)
            {
                exception1.printStackTrace();
            }
            try
            {
                if(stmt != null)
                {
                    stmt.close();
                    stmt = null;
                }
            }
            catch(Exception exception2)
            {
                exception2.printStackTrace();
            }
            try
            {
                if(con != null)
                {
                    con.close();
                    con = null;
                }
            }
            catch(Exception exception3)
            {
                exception3.printStackTrace();
            }
        }    public ResultSet executeQuery(String s)
        {
            try
            {
                if(con == null)
                {
                    con = ds.getConnection();
                }
                stat = con.prepareStatement(s, 1005, 1008);
                rs = stat.executeQuery();
            }
            catch(SQLException sqlexception)
            {
                System.err.println("mydb.executeQuery:" + sqlexception.getMessage());
            }
            return rs;
        }    public int executeUpdate(String s)
        {
            int i = 0;
            try
            {
                if(con == null)
                {
                    con = ds.getConnection();
                }
                stmt = con.createStatement();
                i = stmt.executeUpdate(s);
            }
            catch(SQLException sqlexception)
            {
                System.err.println("mydb.executeQuery:" + sqlexception.getMessage());
            }
            return i;
        }    public PreparedStatement getPreparedStatement(String s)
        {
            try
            {
                if(con == null)
                {
                    con = ds.getConnection();
                }
                stat = con.prepareStatement(s);
            }
            catch(SQLException sqlexception)
            {
                System.err.println("mydb.executeQuery:" + sqlexception.getMessage());
            }
            return stat;
        }    public int getCount()
        {
            if(rs == null)
            {
                return 0;
            }
            int i = 0;
            try
            {
                int j = rs.getRow();
                rs.last();
                i = rs.getRow();
                rs.beforeFirst();
                rs.relative(j);
            }
            catch(SQLException sqlexception)
            {
                System.err.println("mydb.java:" + sqlexception.getMessage());
            }
            return i;
        }
    }请高手帮帮我,把网站跑起来。
      

  5.   

    initialcontext.lookup   通过名字查找资源
      

  6.   

    查找 JNDI 上配置的数据源,字符串中的东西是 JNDI 的路径,可以通过这个名字找到绑定在 JNDI 上的 DataSource从 DataSource 获得 Connection 是 Java EE 中推荐的方式。
      

  7.   

    那是数据库连接池...需要配置下comcat
      

  8.   

    楼主看到了.lookup("java:comp/env/jdbc/ejnqdbcon");。首先想到的就是数据源的配置和获取,你看看你的web.xml或者是我引用这个的配置文件,绝对有这个配置,还有想要完整的说明,就多Google一下吧,呵呵,不是不让其百度,哈哈,个人爱好。还有,这里的是一个配置好处,就像8楼说的,数据绑定,不然你每一次都去连接数据库,每一次都去释放数据连接池,这样会造成很多麻烦的。
      

  9.   

    看到jsp动作就要晕,少用少用
      

  10.   

    是数据库连接池的问题
    如果是tomcat6.0的话你可以查看下conf下面的server.xml之后再对照着web.xml
    可以尝试着去理解下
    或者用普通的连接数据库的方法也可以
    把这些东东去掉就可以了
    不过性能差一些。。
      

  11.   

    貌似是使用了 Java连接池技术吧