- PR -

Servletで応答が帰ってこなくなった

投稿者投稿内容
みずは
会議室デビュー日: 2003/07/21
投稿数: 4
投稿日時: 2004-04-28 14:11
まずは、解決おめでとうございます。

私も、最近同様の現象に悩まされております。
こちらはまだ解決しておりません。

便乗で申し訳ありませんが、何かヒントにならないかと思い投稿させて頂きました。

引用:


橋本さんの書き込み (2004-04-27 10:08) より:

出力されたスレッドダンプを確認すると、以下の部分が頻繁に出ていました。
(省略させて頂いてます)

"Thread-11" daemon prio=1 tid=0x0x8158e70 nid=0x49f waiting for monitor entry [6c800000..6c801830]
at java.sql.DriverManager.registerDriver(DriverManager.java:259)
- waiting to lock <0x64b83a60> (a java.lang.Class)

これを見ると、どうもDBドライバのロードで止まっているように見えます。




これなんですが、他のスレッドで
"Thread-40" daemon prio=5 tid=0x2c3f68 nid=0x3a waiting for monitor entry [e0e7f000..e0e81994]
.
.
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
- locked <f67971b0> (a java.lang.Class)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
- locked <f67971b0> (a java.lang.Class)
.
.

となっている箇所はありませんか?

私は、lockがかかるのはこっちが先だと思っています。
それで、その後 registerDriver の登録も出来なくなるような気がしています。

環境は、apache1.3.27,tomcat4.1.24,mod_jk2,oracle と若干違っていますが...。
VMの環境を1.4.1_07に変えてもまた発生してしまいました。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-04-28 15:49
DriverManager.getConnection() はデッドロックを引き起こす可能性があります。
以下は WLS 5.1 にまつわる記事ですが、WebLogic に限った話ではありません。
・WLS 5.1.x - Why DriverManager.getConnection() can cause a deadlock
http://support.bea.com/application?namespace=askbea&origin=ask_bea_answer.jsp&event=link.view_answer_page_clfydoc&answerpage=solution&page=wls%2FS-09148.htm

回避方法は以下に詳しくかかれています。
http://edocs.beasys.co.jp/weblogic/docs/classdocs/urls.html#structure
みずは
会議室デビュー日: 2003/07/21
投稿数: 4
投稿日時: 2004-05-20 11:37
引用:

インギさんの書き込み (2004-04-28 15:49) より:
DriverManager.getConnection() はデッドロックを引き起こす可能性があります。
以下は WLS 5.1 にまつわる記事ですが、WebLogic に限った話ではありません。
http://edocs.beasys.co.jp/weblogic/docs/classdocs/urls.html#structure



結局デッドロックを引き起こす原因はつかめないままでした。
回避策にて一応ロックはかからなくなりました。
情報提供ありがとうございました。


スキルアップ/キャリアアップ(JOB@IT)