次のクラスを接続マネージャーとして使用して、データソースを介して DB 接続を確立しています。問題は、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
コネクティビティに使用すると、このクラスを機能させることができます。- を使用してサーブレット クラスを介して JDBC 接続を実現できます
DataSource
。
しかし、上記のコードでは、次の例外が発生します。
javax.naming.NoInitialContextException: 環境またはシステム プロパティで、またはアプレット パラメータとして、またはアプリケーション リソース ファイルでクラス名を指定する必要があります:
以下は私のcontext.xmlです
<リソース認証="コンテナ" driverClassName="oracle.jdbc.OracleDriver" name="jdbc/myoracle" パスワード="パスワード" type="javax.sql.DataSource" url="jdbc:oracle:thin:@10.49.116.42:1521:DBNAME" ユーザー名="ユーザー名"/>