-
Type: Bug
-
Resolution: Fixed
-
Priority: Minor
-
Affects Version/s: 3.0.0-EA4-SNAPSHOT
-
Component/s: component/kvasir-webapp
-
None
-
Environment:PLUST-0.0.4で生成した新規サイト。変更なし
(このエントリはKVASIR-39を作成しなおしたもの。)
存在しない静的なリソースを指定すると、内部的にはエラーページを出力しようとするが、
その途中にあるdomainURLを取得するロジックでArrayIndexOfBoundsExceptionが発生する。
具体的には、ServletUtils#getDomainURL()の418行目。
たとえば、存在しないリソースhttp://localhost:8080/toybox/sample.jpgをブラウザから入力すると、
入ってくる変数は
uri: /toybox/templates/exceptions/PageNotFoundRuntimeException
url: http://localhost:8080/toybox/sample.jpg
となり、uriの方が長くなる。
スタックトレースは下記の通り。
2007-01-28 18:38:33,025 ERROR http-8080-Processor23 [StandardPageExceptionHandler] - ...and tried to handle this exception, but couldn't forward to: /templates/exceptions/PageNotFoundRuntimeException
java.lang.StringIndexOutOfBoundsException: String index out of range: -18
at java.lang.String.substring(Unknown Source)
at org.seasar.kvasir.webapp.util.ServletUtils.getDomainURL(ServletUtils.java:418)
at org.seasar.kvasir.cms.impl.CmsPluginImpl.determineHeimId(CmsPluginImpl.java:310)
at org.seasar.kvasir.cms.filter.impl.PageRequestFilter.doFilter(PageRequestFilter.java:128)
at org.seasar.kvasir.webapp.filter.impl.FilteredRequestFilter.doFilter(FilteredRequestFilter.java:51)
at org.seasar.kvasir.webapp.chain.impl.RequestFilterChainImpl.doFilter(RequestFilterChainImpl.java:31)
at org.seasar.kvasir.webapp.servlet.KvasirFilter.processChain(KvasirFilter.java:222)
at org.seasar.kvasir.webapp.servlet.KvasirFilter.doFilter(KvasirFilter.java:157)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
at org.seasar.kvasir.cms.handler.impl.StandardPageExceptionHandler.doHandle(StandardPageExceptionHandler.java:102)
at org.seasar.kvasir.cms.handler.impl.FilteredPageExceptionHandler.doHandle(FilteredPageExceptionHandler.java:49)
at org.seasar.kvasir.cms.handler.impl.PageExceptionHandlerChainImpl.doHandle(PageExceptionHandlerChainImpl.java:33)
at org.seasar.kvasir.cms.handler.impl.GardRootChangePageExceptionHandler.doHandle(GardRootChangePageExceptionHandler.java:30)
at org.seasar.kvasir.cms.handler.impl.PageExceptionHandlerChainImpl.doHandle(PageExceptionHandlerChainImpl.java:33)
at org.seasar.kvasir.cms.filter.impl.PageRequestFilter.processExceptionHandlerChain(PageRequestFilter.java:231)
at org.seasar.kvasir.cms.filter.impl.PageRequestFilter.doFilter(PageRequestFilter.java:176)
...