ブログポートレット

ブログポートレットのHibernateの管理方法をS2Hibernateに置き換える。まぁ、たぶん、順調に動いていると思われる。問題があるとすれば、たまに”Stream closed”と言うエラーが出るが、たぶん、MyFacesの問題と思われる。何かのコンポーネントが高負荷時に発生させるような感じみたいだな・・・。MyFacesメーリングリストにもコメントされていたようだが、原因が同じかは未確認。

S2Hibernateメモ

JSFのDataModelを実装するのにScrollableResultsを利用しているが、S2Hibernate の環境に移行したら、デフォルトで、ScrollableResultsが得られなくなった。ちょっと調べてみたところ、Hibernate 3.0.5のSettingsFactory#buildSettings(Properties)で

metaSupportsScrollable = meta.supportsResultSetType(ResultSet.TYPE_SCROLL_INSENSITIVE);

で値が取得できなくなったためのよう。そもそもこのコードまで行かずにその前でExceptionが発生して、とばされているように思う。try でキャッチして、特にログをはかないようになっているので、何が原因で発生しているかは不明だが。これは、Seasarのデータソースの方になにやらあるのだろうか・・・。そもそもデータソースではとれないのかもしれないけど(勉強不足・・・そういうもの??)。とりあえず、hibernate.cfg.xmlにhibernate.jdbc.use_scrollable_resultsetを設定して、回避した。

Seasarメモ

複数のComponentDefを持つと、TooManyRegistrationComponentDefImplになるけど、TooManyRegistrationComponentDefインターフェースは、addComponentDefとgetComponentClassesの2つしかなく、TooManyRegistrationComponentDefImplにキャストしないと、getComponentDefsとかで含まれているものがとれない気がするのだが、これらのメソッドはインターフェースにあった方が良いのではなかろうか?まぁ、S2Container#findComponentDefs(Object)で取得すれば、良いのかもしれないけど。