81,122
社区成员




javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at common.sqlHelper.DBTools.getConn(DBTools.java:22)
at common.sqlHelper.DBTools.main(DBTools.java:74)
/**
* 创建数据库连接池
*/
package common.sqlHelper;
import java.sql.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class DBTools {
private Connection conn;
private ResultSet rs;
private PreparedStatement ps;
private DataSource ds;
public Connection getConn() {
try {
Context ctx = new InitialContext();
ds = (DataSource)ctx.lookup("java:comp/env/oracle");
if(ds != null)
{
conn = ds.getConnection();
}
} catch (Exception e) {
System.out.println("异常时手动连接数据库");
e.printStackTrace();
// 异常时手动连接数据库
String url = "jdbc:oracle:thin:@localhost:1521:ORA9I";
String name = "scott";
String passwd = "tiger";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url, name, passwd);
} catch (Exception e2) {
// TODO: handle exception
e.printStackTrace();
}
}
return conn;
}
public void close()
{
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ps != null){
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
DBTools d = new DBTools();
d.getConn();
}
}
……
-->
</Host>
</Engine>
</Service>
<!--
<context path="/TestLogin" doBase="E:\workspace2\WorkSpace\WorkSpace\TestLogin\WebRoot"
reloadable="true" workDir="E:\workspace2\WorkSpace\WorkSpace\TestLogin\work">
-->
<Resource name="oracle"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:ORA9I"
username="scott"
password="tiger"
maxActive="100"
maxIdle="20"
maxWait="2000"
/>
<!--
</context>
-->
</Server>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/oracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
<Resource name="oracle"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:ORA9I"
username="scott"
password="tiger"
maxActive="100"
maxIdle="20"
maxWait="2000"
/>
这段代码应该在CONF目录下的context.xml配置,而不是在server.xml中