环境是sql2000,tomcat6.0,程序是别人的程序,拿过来修改了,但是就是连不到数据库,各位帮忙看看项目名survey 数据库名也叫survey,以前没接触过JNDI,所以不知道该怎么配,
这个加红的JNDIname应该怎么替换了survey\META-INF的context.xml 配置是这样的
<Resource name="jdbc/survey"
type="javax.sql.DataSource"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=survey"
username="sa" password="sa" maxActive="200" maxIdle="10"
maxWait="-1"WEB-INF  配置
<env-entry>
  <env-entry-name>JNDIname</env-entry-name>
  <env-entry-type>java.lang.String</env-entry-type>
  <env-entry-value>jdbc/survey</env-entry-value>
 </env-entry>这是连接文件
}
/**
 * 通过web.xml的JNDIname参数配置创建连接
 * @return
 */
public static Connection getConnection(){
try {
String JNDIname=(String)new javax.naming.InitialContext().lookup("java:comp/env/JNDIname");
return ConnectionFactory.getConnection(JNDIname);
} catch (NamingException e) {
 
System.out.print("数据库未启动或连接池未配置!");
}
return null;
}
/**
 * 通过指定的JNDI名称获取数据库连接,如JDBC/SURVEY
 * @param JNDIname
 * @return Connection
 */
public static Connection getConnection(String JNDIname){
 
try {
Context initCtx = new InitialContext();
      Context envCtx = (Context) initCtx.lookup("java:comp/env");
      DataSource ds = (DataSource) envCtx.lookup(JNDIname); return ds.getConnection();
} catch (NamingException e1) {
 
System.out.print("数据库未启动或连接池未配置!");
return null;
} catch (SQLException e) {
e.printStackTrace();
return null;
}

解决方案 »

  1.   

    这个JNDIname是不是应该写成jdbc/survey呢  我应该怎么配置jndiname名称了
      

  2.   

    web.xml中<env-entry>可以不写。获取连接的时候这么写
    DataSource ds =(DataSource )new javax.naming.InitialContext().lookup("java:comp/env/jdbc/survey");
    return ds.getConnection();
      

  3.   

     数据库连接池在context.xml 里也有相应的配置 jdbc/surveyweb.xml
      <resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/survey</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
     </resource-ref> class:Context initContext = new InitialContext();
    DataSource ds=(DataSource)initContext.lookup("java:comp/env/jdbc/survey");
    conn = ds.getConnection();
      

  4.   

    <Resource name="jdbc/survey" auth="Container"
    type="javax.sql.DataSource"
    driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
    url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=survey"
    username="sa" password="sa" maxActive="200" maxIdle="10"
    maxWait="-1"  />把这段添加到 Tomcat6.0\conf\server.xml中<GlobalNamingResources>放在这里</GlobalNamingResources>
    其它同三楼。