[Seasar-user:17585] Kuina-Daoで[ESSR0311]のエラー

"岩切 正彦(Masahiko Iwakiri)" [E-MAIL ADDRESS DELETED]
2009年 6月 2日 (火) 10:21:10 JST


初めてメールさせていただきます、岩切と申します。

現在、Teeda+Kuina-Daoを使ったWebアプリを開発しているのですが、
肝心要のKuina-DaoでのDBアクセスがうまくいかず
苦戦していて、皆さんの知恵を貸していただきたい次第です。

開発環境としては、
・JDK6.0
・Eclipce3.4
・Seaser2.4.22
・Dolteng 0.28.0
・Kuina-dao 1.0.1

実行環境は・Tomcat6.0.18を使用しています。
*開発はWinXP、実行はCentOS5.2ですが、JavaとTomcatのバージョンはあわせています。

プロジェクトの構成としては、
・WebUI(Teeda)
・DBアクセス(Kuina-Dao)
といった形で分割しています。
*複数のWebUIプロジェクトから、DBアクセス部分を共用できるように、DBアクセス
部分を分割して、jar化して使う構想です。

で、DBアクセスのjarについては、Kuina-Daoのファーストステップガイド(http:
//kuina.seasar.org/ja/firststep/standalone.html)を参考に
作成し、接続先DBをPostgresSQL8.3に変更しています。
その上で、jdbc.diconを修正し、S2TestCaseを継承したテストクラスでのDBアクセスが
できていることは確認できました。
*テストクラスはDBアクセス用のプロジェクト内に作成。

なお、DAOクラスについては、2パターン作っていて、ファーストステップガイドにあっ
た標準的なインターフェースのみでDBアクセスできるDAOと、
findAllなどのメソッドをDaoBaseクラスに集約させ、それを継承してDAOクラスとして
使うパターンと、2パターンで検証しています。テストクラスでの検証は、両パターン
とも無事に接続確認が取れました。

ですが、このDBアクセスjarをWebUIのプロジェクトにインポートして使おうとしたとこ
ろ、問題がおきていて、DB接続ができない状態で嵌まり込んでいます。

1.インターフェースDAOの場合
 テストクラスと同様に、メンバとして、インタフェースDAOを追加し、
 findAllメソッドを実行しようとすると、NullPointerExceptioが発生します。
 ただインターフェースなので、Newすることもできず、解決策が見出せません。

2.DaoBase使用パターン
 今回の納入先のお作法として、DAOを使う場合は、共通する処理はDaoBaseに集約する
 というのがありますので、実際に使用するのはこちらになると思います。

 こちらのパターンで実行してみると、下記のような例外が出てしまいます。


以下、スタックトレースの抜粋です。
*************
2009-06-02 09:52:28,562 [http-8081-1] INFO
org.seasar.kuina.dao.criteria.impl.SelectStatementImpl - JPQLを実行します
	SELECT infoTenant FROM InfoTenant AS infoTenant
2009-06-02 09:52:29,343 [http-8081-1] ERROR
org.hibernate.ejb.AbstractEntityManagerImpl - Unable to mark for rollback on
PersistenceException:
org.seasar.framework.exception.SIllegalStateException: [ESSR0311]トランザクショ
ンが開始されていません
	at
org.seasar.extension.jta.AbstractTransactionManagerImpl.setRollbackOnly(AbstractTransactionManagerImpl.java:116)
	at
org.seasar.extension.jta.SingletonTransactionManagerProxy.setRollbackOnly(SingletonTransactionManagerProxy.java:65)
	at
org.hibernate.ejb.AbstractEntityManagerImpl.markAsRollback(AbstractEntityManagerImpl.java:432)
	at
org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:587)
	at
org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:629)
	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:73)
	at
org.seasar.kuina.dao.criteria.impl.SelectStatementImpl.getResultList(SelectStatementImpl.java:235)


(以下省略)
*************

また、Exception.getMessageを使ってメッセージを見ると、
org.hibernate.SessionException: Session is closed!
といったメッセージも出てきております。

なにか設定ファイルが悪いのか、実装の仕方もまずいのか、どこに問題があるのか、
まったくわからない状態に陥っております。


以上、ご教授のほどよろしくお願いいたします。

-- 
******************************************

株式会社エアフォルク
 技術部 システムエンジニア
  岩切 正彦

 E-mail : [E-MAIL ADDRESS DELETED]
  URL    : http://www.airfolc.co.jp

京都本社:
604-8135 京都府京都市中京区東洞院六角上る
三文字町225 朝陽ビル4F
TEL 075-213-7530  FAX 075-213-7531

東京営業所:
105-0004 東京都港区新橋6-20-11高木ビル4F
TEL:03-6402-7766  FAX:03-6402-7767

******************************************
_______________________________________________
Seasar-user mailing list
[E-MAIL ADDRESS DELETED]
https://ml.seasar.org/mailman/listinfo/seasar-user



Seasar-user メーリングリストの案内