- - PR -
[JSP] カスタムタグのreleaseが呼出されない
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-04-18 14:34
おせわになります.
Tomcat5.5 + Struts1.1でカスタムタグを作成しているのですが、 BodyTagSupportを継承し、releaseをオーバーライトしているのですが、 releaseが呼出されません. どのようなことが原因と考えられるのでしょうか? | ||||
|
投稿日時: 2005-04-18 15:00
tag のインスタンスがキャッシュされ、再利用されるためではないでしょうか。
Web アプリケーションをアンデプロイするタイミングなどで呼び出されませんか? | ||||
|
投稿日時: 2005-04-18 15:05
はい、Tomcatを停止する際に呼出されます. 内部で、DBの接続先を切り替えたり、プールしたりしているので、 Jsp表示毎にreleaseを呼出したいのですが、TagのInstanceがCashされない方法は 有るのでしょうか? | ||||
|
投稿日時: 2005-04-18 15:32
>Jsp表示毎にreleaseを呼出したいのですが、TagのInstanceがCashされない方法は
#関係ないですが cash ではなくて cache ですね 毎回別々に行いたい処理については release() ではなく doStartTag などに実装すべきではないでしょうか。 また、別のアプローチとしては SimpleTag を使う方法もあります。こちらはインスタンスが再利用されずに確実に毎回生成されると思います。私は試したことはありませんが・・。 http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/jsp/tagext/SimpleTag.html JSP や Taglib の基本的なことについてはまず参考書を頼りに勉強してはいかがでしょう。いい本が出ています。 http://www.amazon.co.jp/exec/obidos/ASIN/4774122912/250-3689772-9524254 | ||||
|
投稿日時: 2005-04-18 20:58
同じ問題ではまったことがありました。
release()はタグ毎に呼ばれるものではないみたいなので、 「タグの中で自分でrelease()を呼ぶ」ようにした記憶があります。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3163&forum=12 | ||||
|
投稿日時: 2005-05-17 00:02
お世話になります。
ちょうど、今この内容ではまっておりました。 tomcat の場合、タグに指定された属性種類ごとにタグのインスタンスをプーリング しています。したがって、同じ属性を指定している限り「必ず」上書きされるはず なので、release() が呼び出されなくても問題にはならないはずです。 ところがタグの内部処理として、JSP 上で指定されていない属性に値をセットした 場合、再度同じ属性の並びで定義したタグを実行する際、上記のプールから取得 されるため、セットしなかった属性の前回値が利用されてしまうことになります。 そういうことか、と思いました。 確かにどこかで、タグの setter を内部から呼ぶな、と書いてあった気がします。 |
1