開発にはHibernate3を使用し、ローカル開発サーバーとしてWASLibertyProfileを使用しています。DBサーバーがダウンしたときに例外処理を作成しようとしています。hibernate.cfg.xml
これを行うために、このテストのために偽のIPアドレスに接続して環境をシミュレートしようとしています。
次のJAVAコードがありますが、DB接続の準備ができていないときに、例外コードで例外がキャッチされませんでした。コンソール出力は、接続を警告として取得できなかったことを示しています。シナリオを警告として表示するのではなく、例外コードでキャプチャする方法を教えてください。
JAVAコード
public class HibernateUtil {
static {
try {
log.info("HibernateUtil.static - Begin");
if (cacheFactory.get("Factory") == null) {
sessionFactory = new Configuration().configure().buildSessionFactory();
cacheFactory.put("Factory", sessionFactory);
} else {
sessionFactory = (SessionFactory) cacheFactory.get("Factory");
}
log.info("HibernateUtil.static - end");
} catch (HibernateException ex) {
throw new RuntimeException("[Exception] : " + ex.getMessage(), ex);
}
}
...
...
}
コンソール出力
INFO 2012-09-20 15:24:16,314 [HibernateUtil.java:37] - HibernateUtil.static - Begin
[WARNING ] recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
[WARNING ] Property [hibernate.cglib.use_reflection_optimizer] has been renamed to [hibernate.bytecode.use_reflection_optimizer]; update your properties appropriately
[WARNING ] recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
[WARNING ] Property [hibernate.cglib.use_reflection_optimizer] has been renamed to [hibernate.bytecode.use_reflection_optimizer]; update your properties appropriately
[WARNING ] Could not obtain connection to query metadata
INFO 2012-09-20 15:24:24,001 [HibernateUtil.java:46] - HibernateUtil.static - end
Hibernate構成
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.url">jdbc:db2://192.168.1.6:51201/MYDB</property>
<property name="hibernate.connection.username">myuser</property>
<property name="hibernate.connection.password">MyPassword</property>
<property name="hibernate.connection.driver_class">com.ibm.db2.jcc.DB2Driver</property>
<property name="hibernate.dialect">org.hibernate.dialect.DB2Dialect</property>
<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
<property name="hibernate.jdbc.batch_size">100</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.connection.release_mode">auto</property>
<property name="current_session_context_class">thread</property>
<property name="hibernate.connection.autocommit">true</property>
<property name="hibernate.transaction.flush_before_completion">true</property>
<property name="hibernate.transaction.auto_close_session">false</property>
<property name="hibernate.cglib.use_reflection_optimizer">true</property>
...
</session-factory>
</hibernate-configuration>