[mayaa-user:613] Re: handled exception, injectedNode is null

加藤太朗 [E-MAIL ADDRESS DELETED]
2008年 1月 11日 (金) 23:28:31 JST


加藤です。

> とりあえず前者のpageSerializeをfalseにするで対応したいと思います。
確実ですがパフォーマンスも確実に悪くなります。
HTMLノードが大量にあるページでは、ビルド時間が掛かります。
シリアライズキャッシュを有効にしていないと重くなります。

> こちら、tomcat(webコンテナ)を再起動したときには必ず発生していまして、

再起動して必ず発生するのは、シリアライズキャッシュファイルから読み込むためです。
WEB-INF/.mayaaSpecCache というディレクトリに作られています。
warを作成する際には、war内にはキャッシュファイルが含まれていないからだと
思われます。そのため、WEB-INF/.mayaaSpecCacheにキャッシュファイルが1つもないので、
最初のうちは発生しないということになります。

> その後は発生したのは初めてだったのですが、時間がたつにつれて発生する形な
> のでしょうか?

WEB-INF/.mayaaSpecCacheの中をクリアした上で、tomcat(webコンテナ)を再起動すれば
しばらくは発生しません。しかし一時的なものです。

問題のあるページを1回でも開くと、そのページ情報はメモリにしばらくキャッシュ
されますが、メモリには限界がありますので、GCの頻度が高くなるか、または、
しばらく誰もそのページをアクセスしなかったか、…のいずれかの理由で、
ページ情報はアンロードされます。その際にページ情報はシリアライズキャッシュファイルに
保存します。

次回のアンロード済みの同ページにアクセスが来た際には、シリアライズキャッシュファイルを
使って復元しようとしますので(テンプレートや.mayaaに変更がない限り)、そこで
はじめて問題が起きるというわけです。

一度起きればTomcatを再起動しても、「次回のアンロード済みの同ページにアクセス」と
条件は一致しているので、発生しつづけるということになります。

ただ、現物を見ていないので、私の経験した情報からの推測でしかありません。
シリアライズ・デシリアライズのタイミングについては間違いありませんが、
問題が発生している原因については、私の認識している問題とことなるものかも
しれません。
できましたら、例外が発生したページの、テンプレートとmayaaファイルを見させていただくと、
mayaaの品質向上に役立てられる可能性があります。
可能な範囲でご協力いただければ幸いです。


> 加藤様、
> 
> お忙しい中、ご返信いただきありがとうございました。
> 
> とりあえず前者のpageSerializeをfalseにするで対応したいと思います。
> 
> こちら、tomcat(webコンテナ)を再起動したときには必ず発生していまして、
> その後は発生したのは初めてだったのですが、時間がたつにつれて発生する形な
> のでしょうか?
> 
> 荒井
> 
> On Fri, 11 Jan 2008 21:29:16 +0900
> 加藤太朗 <[E-MAIL ADDRESS DELETED]> wrote:
> 
> > 加藤です。
> > 
> > 根本理由は少し複雑で解決が難しく、手がつけられていないのですが、
> > 以下のいずれかで対策できます。
> > 
> > ・ServiceProviderのpageSerializeをfalseにする(ただし性能が落ちます)。
> > ・テンプレートのルートノードを静的なものにする。
> > 
> > 問題が起きるのはデシリアライズした結果が、動的なルートノードを
> > 復元できないことにあります。
> > このため、シリアライズキャッシュが無い初期状態では動作し、
> > キャッシュを使ってページを復元した時には問題が起きます。
> > 
> > 問題の起きているテンプレートを差し支えない範囲で見せていただけると、
> > もう少し、具体的なアドバイスができると思います。
> > 
> > 
> > 
> > --------------------------------------------------------->>
> > @author Taro KATO (Gluegent, Inc.)
> > {@link http://d.hatena.ne.jp/t-katochin/}
> > >> It is better to create than to learn. Creating is the essence of life.
> > 
> > 
> > _______________________________________________
> > mayaa-user mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/mayaa-user
> 
> _______________________________________________
> mayaa-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/mayaa-user



--------------------------------------------------------->>
@author Taro KATO (Gluegent, Inc.)
{@link http://d.hatena.ne.jp/t-katochin/}
>> It is better to create than to learn. Creating is the essence of life.




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