我使用以下类作为我的连接管理器来通过数据源建立数据库连接。问题是当我通过我的 DAOImpl 类调用这个类时,它返回 null。
private static DataSource dataSource;
private static Connection connection;
private ConnectionFactory() {
System.out.println(" ConnPoolFactory cons is called ");
}
public static synchronized Connection getConnection() throws SQLException {
try {
if (connection == null) {
Context ctx = new InitialContext();
Context envContext = (Context) ctx.lookup("java:/comp/env");
dataSource = (DataSource) envContext.lookup("jdbc/myoracle");
connection = dataSource.getConnection();
} else {
return connection;
}
} catch (NamingException e) {
e.printStackTrace();
}
System.out.println(connection);
return connection;
//System.out.println(connection);
}
- 如果我用于连接,我可以使这门课正常工作
DriverManager
。 - 我能够通过 servlet 类使用
DataSource
.
但是使用上面的代码,我得到以下异常:
javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名,或作为小程序参数,或在应用程序资源文件中:
以下是我的 context.xml
<资源授权="容器" driverClassName="oracle.jdbc.OracleDriver" 名称="jdbc/myoracle" 密码="密码" 类型="javax.sql.DataSource" url="jdbc:oracle:thin:@10.49.116.42:1521:DBNAME" 用户名="用户名"/>