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

松山 大樹 [E-MAIL ADDRESS DELETED]
2006年 12月 19日 (火) 18:40:57 JST


 松山です。

 同じ現象が出ています。

 今のところ、開発段階で済んでいますが、仮に簡単には停止できない本番環境に
デプロイしたあとに、これが発生してしまうと、ちょっと問題になりそうです。




>浜本です。お世話になっております。
>
>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

-- 
::: 株式会社WOWOWコミュニケーションズ http://www.wowcom.co.jp/
:::   ITシステム・インテグレートDiv.
:::  Web・ソリューション&システム開発Unit.
:::   松山 大樹 - [E-MAIL ADDRESS DELETED]





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