- - PR -
Tomcat4.1.27でJSPからカスタムタグのrelease()メソッドが呼ばれない
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-10-17 21:06
下記の環境でWebアプリケーションの開発を行っていて、ちょっと困ったことがおきてしまいました。
Tomcat 4.1.27 Struts 1.1 OS:Solaris 8 Strutsのタグライブラリを拡張した自作のカスタムタグを作ったのですが、これがうまく動かないのです。原因を調べてみたところ、Tomcatが生成したJSP内でカスタムタグ(を実装したクラス)のreleaseメソッドが呼ばれていないことが原因でした。Tomcat4.1.27ではカスタムタグのインスタンスがプールされ、何度も使いまわされているので、releaseメソッドは必ず呼ばれなければいけないと思うのですが、いかがでしょうか? Tomcat4.0.6でreleaseメソッドが正しく呼ばれることは確認しました。 どなたかこのような現象にあわれた方で、よい回避方などを知っていたら教えてください。 | ||||
|
投稿日時: 2003-10-17 22:08
これかな?
・[Tag.release() not invoked] http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16001 ちょっと読んだところでは 「doFinally() で初期化すべき」との結論になっているようですね。 [ メッセージ編集済み 編集者: インギ 編集日時 2003-10-17 22:12 ] | ||||
|
投稿日時: 2003-10-20 12:14
なるほど。 とはいってもStrutsのタグの方はその仕様に対応できていないようです。(html:textタグをみた限りですが) それに、仕様がどうこうという以前に、オブジェクトをプールするならプールを行っている側でオブジェクトの初期化(この場合はrelease())をするのは当然のような気がします。 とりあえず、今回の問題は解決できそうなのでいいのですが、次回リリースのTomcatではこの点の改善をぜひお願いしたいところです。 | ||||
|
投稿日時: 2003-10-20 12:22
で、Struts 側にはこういう bug が登録されてますね。
・[Bug 23523 Improper use of release() method in <logic:messagesPresent>] http://issues.apache.org/bugzilla/show_bug.cgi?id=23523 9月30日に open されたばかりの bug で fix されていません。注意が必要ですね。 要約すると 「Tomcat側では毎回 release() を呼ぶことを保証していないのに、Struts の taglib ではそれを期待しているので問題になることがある」、と。 現在の nightly build でも同様の問題は発生するそうです。 私も毎回使い終わったら読んでくれることを期待していました・・・しっかり仕様は確認していないのですが、WebLogic もそういう動作をするようです。 | ||||
1
