[Seasar-user:10756] [Teeda]エラーページについて

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2007年 9月 28日 (金) 01:07:00 JST


いつもお世話になっております。

Teeda1.0.11-RC1 の環境でエラーページの表示のテストをしています。
最終目的は、独自に定義したユーザ例外毎にエラーページを切り替えることです。


(1) teedaErrorPage.diconに以下【teedaErrorPage.dicon その1】のように設定し、
  適当な画面でわざと例外が発生するようなロジックを記述すると、
  とりあえずエラーページで設定した画面に遷移することができました。

(2)次に、ユーザ例外「TestException」クラスを作成し、teedaErrorPage.diconに
  【teedaErrorPage.dicon その2】のように設定しました。

 ※[Seasar-user:8941]を参考にしました。


(3) 適当な画面のinitialize() メソッド内で例外を以下のように発生させてみたところ
  意図するエラーページ(error2.html)に遷移せずにerror.htmlに遷移してしまいました。

   public void initialize() throws TestException{
     throw new TestException();
 } 


上記のような使い方は何か間違いがあるのでしょうか?
また、他に何か設定が足りなかったりするのでしょうか?



【teedaErrorPage.dicon その1】──────────────────────
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
	"http://www.seasar.org/dtd/components24.dtd">
<components namespace="teedaErrorPage" >

	<component class="org.seasar.teeda.core.util.ServletErrorPageManagerImpl">
		<initMethod name="addErrorPage">
			<arg>@[E-MAIL ADDRESS DELETED]</arg>
			<arg>"/view/error/error.html"</arg>
		</initMethod>
	</component>
</components>


【teedaErrorPage.dicon その2】──────────────────────
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
	"http://www.seasar.org/dtd/components24.dtd">
<components namespace="teedaErrorPage" >

	<component class="org.seasar.teeda.core.util.ServletErrorPageManagerImpl">
		<initMethod name="addErrorPage">
			<arg>@[E-MAIL ADDRESS DELETED]</arg>
			<arg>"/view/error/error2.html"</arg>
		</initMethod>
		<initMethod name="addErrorPage">
			<arg>@[E-MAIL ADDRESS DELETED]</arg>
			<arg>"/view/error/error.html"</arg>
		</initMethod>
	</component>
</components>


【コンソール上のエラーログ】────────────────────────
DEBUG 2007-09-28 01:02:54,619 [http-8080-1] BEGIN test.TestPage#initialize()
DEBUG 2007-09-28 01:02:54,647 [http-8080-1] トランザクションを開始しました
DEBUG 2007-09-28 01:02:54,649 [http-8080-1] トランザクションをロールバックしました
DEBUG 2007-09-28 01:02:54,649 [http-8080-1] END test.TestPage#initialize() Throwable:test.exception.TestException
DEBUG 2007-09-28 01:02:54,659 [http-8080-1] org.seasar.framework.exception.InvocationTargetRuntimeException: [ESSR0043]test.TestPage$$EnhancedByS2AOP$$f2e328が呼び出した対象が不正です。理由はtest.exception.TestException
DEBUG 2007-09-28 01:02:54,851 [http-8080-1] java.lang.NullPointerException: FacesContext
2007/09/28 1:02:54 org.apache.catalina.core.StandardWrapperValve invoke
致命的: サーブレット facesServlet のServlet.service()が例外を投げました
java.lang.IllegalStateException: レスポンスをコミットした後でフォワードできません
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:302)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)
	at org.seasar.teeda.core.util.ServletExternalContextUtil.dispatch(ServletExternalContextUtil.java:156)
	at org.seasar.teeda.core.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:114)
	at org.seasar.teeda.core.util.ServletErrorPageManagerImpl.handleException(ServletErrorPageManagerImpl.java:56)
	at org.seasar.teeda.core.lifecycle.LifecycleImpl.handleException(LifecycleImpl.java:116)
	at org.seasar.teeda.core.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:95)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:69)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:64)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)




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