JSF 2.0およびGlassfish 3.1で問題なく動作する私のコードは次のとおりです
public static Connection connect(){
try{
String userName = "Defend";
String password = "123456";
String url = "jdbc:sqlserver://localhost;databaseName=ProductDB;";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con = DriverManager.getConnection(url,userName,password);
System.out.println("Connected-DB");
return con;
}catch(Exception e){
System.out.println(e);
return null;
}
}
Glassfish 4.0に移行すると、次の警告とエラーが発生します
SEVERE: 初期化時の FacesContext から InjectionProvider を取得できません。このコンテナは Mojarra インジェクション SPI を実装していますか?
SEVERE: InjectionProvider が見つからないため、@PreDestroy アノテーション付きメソッドを呼び出すことができません。このコンテナは Mojarra インジェクション SPI を実装していますか?
SEVERE: 初期化時の FacesContext から InjectionProvider を取得できません。このコンテナは Mojarra インジェクション SPI を実装していますか?
SEVERE: InjectionProvider が見つからないため、@PreDestroy アノテーション付きメソッドを呼び出すことができません。このコンテナは Mojarra インジェクション SPI を実装していますか?
SEVERE: 初期化時の FacesContext から InjectionProvider を取得できません。このコンテナは Mojarra インジェクション SPI を実装していますか?
SEVERE: InjectionProvider が見つからないため、@PreDestroy アノテーション付きメソッドを呼び出すことができません。このコンテナは Mojarra インジェクション SPI を実装していますか?
警告: Web アプリケーション [/CyberD] は JDBC ドライバー [com.microsoft.sqlserver.jdbc.SQLServerDriver] を登録しましたが、Web アプリケーションの停止時に登録解除に失敗しました。メモリ リークを防ぐために、JDBC ドライバーは強制的に登録解除されています。
重大: Web アプリケーション [/CyberD] は、タイプ [com.microsoft.sqlserver.jdbc.ActivityCorrelator$1] (値 [com.microsoft.sqlserver.jdbc.ActivityCorrelator$1@163a1f8f]) のキーとタイプの値を持つ ThreadLocal を作成しました[com.microsoft.sqlserver.jdbc.ActivityId] (値 [1a62bb37-9aa5-4b36-8185-354eca0f8da0-3]) ですが、Web アプリケーションが停止したときに削除できませんでした。スレッドは、メモリ リークの可能性を回避するために、時間の経過とともに更新されます。
この connect() 関数を呼び出すと NullPointerException が発生します。親切に私を導いてください