环境是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;
}
这个加红的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;
}
DataSource ds =(DataSource )new javax.naming.InitialContext().lookup("java:comp/env/jdbc/survey");
return ds.getConnection();
<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();
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>
其它同三楼。