javax.naming.NameNotFoundException: Name java:comp is not bound in this Context 我使用连接池连接MS SQL Server2000时出现上面的问题,不知道你们有无出现过,是如何解决的,产生的原因是什么??

解决方案 »

  1.   

    http://www.javer.cn/html/sheji_kaifa_fuwu/Web_kaifa/web_2007068096.html
      

  2.   

    <?xml version='1.0' encoding='utf-8'?>
    <Server>
      <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
      <GlobalNamingResources>
        <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
        <Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/>
        <Resource name="jdbc/zhucen" type="javax.sql.DataSource"/>
        <ResourceParams name="UserDatabase">
          <parameter>
            <name>factory</name>
            <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
          </parameter>
          <parameter>
            <name>pathname</name>
            <value>conf/tomcat-users.xml</value>
          </parameter>
        </ResourceParams>
        <ResourceParams name="jdbc/zhucen">
          <parameter>
            <name>maxWait</name>
            <value>5000</value>
          </parameter>
          <parameter>
            <name>maxActive</name>
            <value>4</value>
          </parameter>
          <parameter>
            <name>password</name>
            <value>6258422</value>
          </parameter>
          <parameter>
            <name>url</name>
            <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=zhucen;user=sa;password=6258422;</value>
          </parameter>
          <parameter>
            <name>driverClassName</name>
            <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
          </parameter>
          <parameter>
            <name>maxIdle</name>
            <value>2</value>
          </parameter>
          <parameter>
            <name>username</name>
            <value>sa</value>
          </parameter>
        </ResourceParams>
      </GlobalNamingResources>
      <Service name="Catalina">
        <Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="8080" redirectPort="8443" maxSpareThreads="75" maxThreads="150" minSpareThreads="25">
        </Connector>
        <Connector port="8009" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8443">
        </Connector>
        <Engine defaultHost="localhost" name="Catalina">
          <Host appBase="webapps" name="localhost">
            <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_log." suffix=".txt" timestamp="true"/>
          </Host>
          <Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true"/>
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
        </Engine>
      </Service>
    </Server>
      

  3.   

    jsp代码如下
    <%@ page language="java" import="java.sql.*,javax.sql.*,javax.naming.*" pageEncoding="gb2312"%>
    <%@ page contentType="text/html;charset=gb2312"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>连接MS SQL Server 2000</title>
    </head>
      
      <body>
        <% 
         Context ctx=null; 
         Context envctx=null;
         DataSource ds=null;
         Statement stmt=null;
         ResultSet rs=null;
         Connection conn=null;
         ResultSetMetaData md=null;
         try
         {
            ctx = new InitialContext();   
               envctx=(Context)ctx.lookup("java:comp/env");   
            ds=(DataSource)envctx.lookup("java:comp/env/jdbc/zhucen");
            conn=ds.getConnection();
            stmt=conn.createStatement();
            rs=stmt.executeQuery("select * from person");
            md=rs.getMetaData();
            out.print(md.getColumnLabel(1)+"   ");
            out.print(md.getColumnLabel(2)+"   ");
            out.print(md.getColumnLabel(3)+"   ");
            out.print(md.getColumnLabel(4)+"   ");
            out.print(md.getColumnLabel(5)+"<br>");
            while(rs.next())
            {
             out.println(rs.getString(1)+"   ");
             out.println(rs.getString(2)+"   ");
             out.println(rs.getString(3)+"   ");
             out.println(rs.getInt(4)+"   ");
             out.println(rs.getString(5)+"<br>");
            }
          }
         catch(Exception e)
         {
         out.print(e);
         }
         finally
         {
         if(rs!=null)rs.close();
         if(stmt!=null)stmt.close();
         if(conn!=null)conn.close();
         }
        
          
         %>
      </body>
    </html>
      

  4.   

    我感觉是
    try
         {
            ctx = new InitialContext();   
               envctx=(Context)ctx.lookup("java:comp/env");   
            ds=(DataSource)envctx.lookup("java:comp/env/jdbc/zhucen");
             ...
             }
    这出了问题,
    下面是一个例子,你参考一下:  try
      {
       Context initCtx = new InitialContext();
       DataSource ds;
       ds = (DataSource) initCtx.lookup("java:comp/env/"+new SystemParameter().JDBC_SOURCE);
       return ds.getConnection();
      }
      

  5.   

    envctx=(Context)ctx.lookup("java:comp/env"); 没完,后面要接你设的连接名
    如:"java:comp/env/OracleSource"
      

  6.   

    终于解决了,谢谢各位,原来java:comp/env/jdbc/zhucen中的zhucen是要我的文件夹名,我犯这个小错误