[Seasar-user:5530] Re: [S2JSF+Teeda] 記法エラー発生後、アプリケーションに一切アクセスできなくなる

Shinpei Ohtani [E-MAIL ADDRESS DELETED]
2006年 12月 19日 (火) 18:39:44 JST


大谷です。

Teeda1.0.3で下記開放漏れは既に対応済みです。
リリースまでしばらくお待ちください。

06/12/19 に Kaisei HAMAMOTO<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 浜本です。お世話になっております。
>
> S2JSF1.1.0 + Teeda1.0.2 を試用中ですが、以下のような問題が発生します。
>
> 【症状】
> HTML ファイルの記法の誤りにより、一度 HTTP ステータス 500 エラーが
> 発生すると、それ以降のリクエスト時に下記の例外が一様に発生し、
> アプリケーションに全くアクセスできなくなる場合がある。
>
> java.lang.IllegalStateException: already released
> org.seasar.teeda.core.context.servlet.ServletFacesContextImpl.assertNotReleased
> (ServletFacesContextImpl.java:225)
> org.seasar.teeda.core.context.servlet.ServletFacesContextImpl.getResponseWriter
> (ServletFacesContextImpl.java:161)
> javax.faces.webapp.UIComponentTag.setupResponseWriter(UIComponentTag.java:351)
> javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:127)
> org.seasar.jsf.processor.TagProcessorImpl.processTag(TagProcessorImpl.java:224)
> org.seasar.jsf.processor.TagProcessorImpl.process(TagProcessorImpl.java:217)
> org.seasar.jsf.processor.ElementProcessor.process(ElementProcessor.java:93)
> org.seasar.jsf.processor.TagProcessorImpl.processChildren(TagProcessorImpl.java:269)
> org.seasar.jsf.processor.TagProcessorImpl.processBodyTag(TagProcessorImpl.java:243)
> org.seasar.jsf.processor.TagProcessorImpl.process(TagProcessorImpl.java:213)
> org.seasar.jsf.processor.TagProcessorImpl.process(TagProcessorImpl.java:196)
> org.seasar.jsf.processor.ViewProcessor.process(ViewProcessor.java:174)
> org.seasar.jsf.processor.ViewProcessor.process(ViewProcessor.java:172)
> org.seasar.jsf.runtime.ViewRendererImpl.renderView(ViewRendererImpl.java:102)
> org.seasar.jsf.application.S2ViewHandler.renderView(S2ViewHandler.java:123)
> org.seasar.jsf.lifecycle.LifecycleImpl.render(LifecycleImpl.java:197)
> javax.faces.webapp.FacesServlet.service(FacesServlet.java:103)
> examples.jsf.util.RequestDumpFilter.doFilter(RequestDumpFilter.java:66)
> org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:62)
> org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:63)
> org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:122)
>
> 【再現例】
> 1. s2jsf-example 1.1.0 を起動する。
> 2. /src/main/webapp/WEB-INF/layout/header.html をエディタで開き、
> <span m:inject="s:insert"> の記述を削除する(意図的にミスを作成)。
> 3. ブラウザからアプリケーションにアクセスすると、
> org.seasar.jsf.exception.InsertProcessorNotFoundRuntimeException
> が発生する。
> 4. /src/main/webapp/WEB-INF/layout/header.html の記述を元に戻す。
> 5. アプリケーションに再度アクセスすると、今度は
> java.lang.IllegalStateException: already released が発生する。
> 6. 以降、全てのアクセスに対して同じ例外が発生する。
>
> 【解決策?】
> Teeda のソースを追ったところ、javax.faces.webapp.UIComponentTag#release() に
> 解放漏れがあるように思えました。メソッドを以下のように変更すると問題が発生
> しなくなりましたが、正しい解決策かどうかは分かりません。
>
> public void release() {
>     parent = null;
>     binding = null;
>     id = null;
>     created = false;
>     rendered = null;
>     // **************** 追加ここから
>     component = null;
>     context = null;
>     createdComponents = null;
>     createdFacets = null;
>     pageContext = null;
>     // **************** 追加ここまで
> }
>
> 以上、よろしくお願いいたします。
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


-- 
=============================
Shinpei Ohtani
[E-MAIL ADDRESS DELETED]
=============================



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