2010-11-25 3 views
2

次のテクノロジを組み込んだかなり古いWebアプリケーションを作成しています。Sporadic java.lang.IllegalStateException JSFフェイスレットとJSPレンダラーを混在させた場合の例外

  • SUN JSF RI 1.1
  • Faceletsの-API 1.1.14
  • JBOSS 4.0.2
  • Quipukit 1.6(AJAX JSF コンポーネントライブラリ)

アプリケーションが独自に開発しました。 JSPレンダラを使用します。まもなく追加される新しい機能については、faceletsに切り替えるつもりですが、残りの部分を書き直すことはできません。したがって、FaceletとJSPレンダリングを並行して実行する必要があります。一般にこれは動作しますが、アプリケーションのJSP部分で次の例外が発生することがあります(再現性がない場合があります)。

15:34:45,995 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/].[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception 
java.lang.IllegalStateException: getWriter() has already been called for this response 
    at org.apache.catalina.connector.Response.getOutputStream(Response.java:565) 
    at org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:171) 
    at teamdev.jsf.util.ResourceFilter.doFilter(SourceFile:87) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) 
    at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39) 
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:153) 
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744) 
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) 
    at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) 
    at java.lang.Thread.run(Thread.java:619) 

例外は、値が正しく次のアクションに提出されていないように、それは、いくつかの奇妙な行動を起こし発生する(明らかにJSF相が適切に処理されていない)。ここ

は私のウェブから関連する部分です.xmlとfaces.config

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    version="2.4" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 


     <context-param> 
      <param-name>javax.faces.CONFIG_FILES</param-name> 
      <param-value>/WEB-INF/faces-config.xml</param-value> 
     </context-param> 


     <context-param> 
      <param-name>javax.faces.DEFAULT_SUFFIX</param-name> 
      <param-value>.jsp</param-value> 
     </context-param> 

     <!-- Use Documents Saved as *.xhtml --> 
     <context-param> 
      <param-name>facelets.VIEW_MAPPINGS</param-name> 
      <param-value>*.xhtml</param-value> 
     </context-param> 

     <servlet> 
      <servlet-name>Faces Servlet</servlet-name> 
      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
      <init-param> 
       <param-name>config</param-name> 
       <param-value>/WEB-INF/faces-config.xml</param-value> 
      </init-param> 
      <init-param> 
       <param-name>debug</param-name> 
       <param-value>3</param-value> 
      </init-param> 
      <init-param> 
       <param-name>detail</param-name> 
       <param-value>3</param-value> 
      </init-param> 
      <load-on-startup>0</load-on-startup> 
     </servlet> 

     <servlet-mapping> 
      <servlet-name>Faces Servlet</servlet-name> 
      <url-pattern>/faces/*</url-pattern> 
     </servlet-mapping> 

     <session-config> 
      <session-timeout>60</session-timeout> 
     </session-config> 

     <welcome-file-list> 
      <welcome-file>index.jsp</welcome-file> 
     </welcome-file-list> 







<faces-config> 
    <application> 
     <message-bundle>validatormessages</message-bundle> 
     <locale-config> 
      <default-locale>de_DE</default-locale> 
      <supported-locale>en_GB</supported-locale> 
      <supported-locale>en_US</supported-locale> 
      <supported-locale>fr_FR</supported-locale> 
     </locale-config> 
     <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> 
    </application> 

... 

</faces-config> 

何か助けがありがたいです。

よろしく

答えて

2

それはスクリプトレット表現を使っているとき、JSPは(<%= %>getWriter()を呼び出しますか、明示的にスクリプトレット<% %>)にout.printによって出力に書いているとき。

JSPページにこのようなことがないかどうかを確認します。

+0

そうではありませんが、私たちはjstl コマンドを持っています。これもトラブルの原因になりますか? – huo73

+0

さらにレビューしたところ、FaceletsとJSPレンダラーとJSTLを混在させたことが原因であることが明らかになりました。私たちを正しい方向に導くヒントのためのThx。 – huo73

+0

ようこそ。 – BalusC

関連する問題