- - PR -
AbandonedObjectPool
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-12-28 10:31
お世話になっております。
Tomcat5.5にてデータソース接続を行っているのですが、 DBのUPDATE時に AbandonedObjectPool is used (org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool@bad8a8) LogAbandoned: true RemoveAbandoned: true RemoveAbandonedTimeout: 300 このようなエラーが出てしまい、更新できませんでした。 SELECT文などで要素を取り出すことはできているようです。 また、Class.forNameでのDB接続には正しく更新できました。 コンテキストルート/WEB-INF/web.xmlの記述 <resource-ref> <res-ref-name>jdbc/sample</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Application</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref> コンテキストルート/META-INF/context.xmlの記述 <Context docBase="Hoge" reloadable="true" path="/Hoge"> <Resource auth="Application" description="DB Connection" name="jdbc/sample" type="javax.sql.DataSource" driverClassName="COM.ibm.db2.jdbc.app.DB2Driver" url="jdbc:db2:SAMPLE" username="usr" password="pass" maxActive="100" maxIdle="30" maxWait="10000" /> </Context> また、このエラーにより connection.setAutoCommit(false); に java.lang.NullPointerExceptionのエラーが出ました。 破棄されたコネクションを使っている、というふうに読めるのですが、 自分で調べてみても詳細がよく分からず困っています。 どなたかご教授願えませんでしょうか。 [ メッセージ編集済み 編集者: Oz 編集日時 2006-12-28 12:41 ] [ メッセージ編集済み 編集者: Oz 編集日時 2006-12-28 12:48 ] | ||||
|
投稿日時: 2006-12-28 10:38
結構事例はあるみたいですね。
どこらへんのページをあたった/どういう調査をしたのでしょうか? APIを見ると、logAbandoned=true とするとコネクション取得時のスタックトレースを記録できるようですね。 [ メッセージ編集済み 編集者: インギ 編集日時 2006-12-28 10:40 ] | ||||
|
投稿日時: 2006-12-28 12:48
インギ様 毎回お世話になっております。
自分でもAbandonedObjectPoolで検索をかけてみましたが、 日本語のページが見当たらず、英語には明るくないこともあり 翻訳サイトなどで英語ページを日本語訳させたりしてみました。 また、Class.forNameだと問題なく動く、 SELECT文などが通るということはjavaソース以外の箇所 (Tomcat内のxml文書など)に問題があるのかと思い、 データソースでもUPDATE文/INSERT文の通るコンテキストのxmlと比較してみましたが、 問題箇所を探し出すことができませんでした。 >APIを見ると、logAbandoned=true とするとコネクション取得時のスタックトレースを記録できるようですね。 恐縮ながらそれは初めて知りました。 試してみます。ありがとうございます。 | ||||
|
投稿日時: 2006-12-28 13:16
連投すいません。
http://takakkalinux.blog20.fc2.com/blog-entry-61.html こちらの記述によると コネクションプーリングがちゃんとできているかの確認として AbandonedObjectPool is used が出ていればOKという記事がありました。 ということは、UPDATE/INSERTできないこととAbandonedObjectPool表記は 関係ないのかもしれません…。 まったく違うところに原因があるのかもしれないので、調べ直したいと思います。 | ||||
|
投稿日時: 2006-12-29 00:46
このメッセージは removeAbandoned = true とした時に、 指定通り DB 接続のリーク対策機能を有効にした事を知らせるものです。 詳しくは Tomcat のオフィシャル・ページを見て下さい。 以下のページは 5.0 の日本語訳ですが 5.5 でも通用するでしょう。 http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/jndi-datasource-examples-howto.html |
1