アプリケーションの OJDBC ドライバーを OJDBC6 から OJDBC7 に更新しました。そして、奇妙なClassCastExceptionを取得しました。内部ログは、次の
oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource$BlockReleaserListener.(BlockSource.java:348)
ことを示しています:
java.lang.ClassCastException: sun.management.MemoryImpl cannot be cast to javax.management.NotificationEmitter
http://www.docjar.com/docs/api/sun/management/MemoryImpl.htmlによると、 MemoryImpl は NotificationEmitter を実装しているため、この例外が表示される理由はわかりません。
JVM を Hotspot から IBM (両方とも JDK7) に変更すると、同じ結果になります。
java.lang.ClassCastException: com.ibm.lang.management.MemoryMXBeanImpl incompatible with javax.management.NotificationEmitter
また、MemoryMXBeanImpl は NotificationEmitter を実装します。
誰かが回避策を持っているか、なぜそれが起こるのか考えているなら、私はとても感謝しています!