2017-07-17 4 views
0

私は私の春Bacthアプリに次のコードを持っている:JDBCテンプレートでSqlInvalidAuthorizationSpecExceptionを捕捉する方法は?

JdbcTemplate jdbcTemplate = new JdbcTemplate(this.dataSouce);  
     log.debug(getPropKey()+"Calling DB for records..."); 


    List<DataLoadRecordClass> rows = null; 

try { 
    rows = jdbcTemplate.query(queryStringFormated, new DataRecordRowMapper()); 
} catch (Exception ex) { 
    log.error(getPropKey()+"FATAL: Database call failed wtih : " + ex.getMessage()); 
} 

私はそれを間違ったユーザ名/パスワードを供給した場合、それは

2017-07-17 13:38:31,945 31363 ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Exception during pool initialization. 
com.ibm.db2.jcc.am.SqlInvalidAuthorizationSpecException: [jcc][t4][2013][11249][4.12.55] Connection authorization failure occurred. Reason: User ID or Password invalid. ERRORCODE=-4214, SQLSTATE=28000 

をスローしかし、上記の試みはそれをキャッチしません。これらのエラーをどうやって捕らえることができますか?今はエラーが発生したときに何がエラーになったのか気にすることさえできません。

私はこのような多くのStack Over Flowの投稿を見てきましたが、それらのすべてが私が試したキャッチ "DataAccessException"と言われていますが、それはうまくいかないのですが、例外をキャッチするのはどの/

+0

SqlInvalidAuthorizationSpecExceptionをキャッチする別のキャッチブロックを記述するか、printStackTraceを使用できます。 – sForSujit

+0

既に試してみました。あなたはSqlInvalidAuthorizationSpecExceptionをキャッチすることはできません(コンパイラはあなたを止めるでしょう)。 – VydorScope

+0

は役立ちませんhttps://developer.ibm.com/answers/questions/16409/sqlinvalidauthorizationspecexception-unable-to-connect-to-db2-database.html – sForSujit

答えて

0

try-catchは単にクエリをラップします。このエラーは、接続プールの初期化が失敗したことを示します。おそらく、データソースが誤って構成されているためです。この初期化は、あなたの質問のtry-catchの外側(前)に行われます。

+0

実際、スタックトレースによると、上記のtry/catchの行であるクラスの304行目で例外が発生しています。 – VydorScope

+0

おそらくもっとコードを共有できますか?これまで提供してきた行番号は表示されません。 – user6629913

0

申し訳ありませんが、コードが、それは私のエラーハンドラに取得し、ログファイル内のすべてのことノイズが私のメッセージを埋葬する前にJDBCは、スタックトレースをダンプしているだけという、エラーをキャッチされました。私はそれを回避することができます。

+0

それは、それをキャッチしているJDBCではありません、プールに接続を追加しようとすると、これを行うのはあなたの接続プール(HikariCP)です。 –

関連する問題