I am using the follwing class as my connection manager to make DB connectvity through datasource. The problem is that when I invoke this class through my DAOImpl class it is returning 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);
}
- I am able to make this class work if I use
DriverManagerfor conectivity. - I am able to achieve JDBC connectvity through servlet class using a
DataSource.
But with the above code I get the following exception:
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:
the following is my context.xml
<Resource auth="Container"
driverClassName="oracle.jdbc.OracleDriver"
name="jdbc/myoracle"
password="password"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@10.49.116.42:1521:DBNAME"
username="username"/>
