[KVASIR-113] サイト編集画面左下の矢印表示欄にERRORが表示される Created: 26/Feb/07  Updated: 27/Feb/07  Resolved: 27/Feb/07

Status: Closed
Project: Kvasir/Sora
Component/s: None
Affects Version/s: 3.0.0-EA4-SNAPSHOT
Fix Version/s: 3.0.0-RC1

Type: Bug Priority: Major
Reporter: manhole Assignee: skirnir
Resolution: Fixed Votes: 0
Labels: None


 Description   

サイト編集画面左下の矢印表示欄(pop選択欄)にERRORが表示される場合があります。
そのKvasirへのアクセスURLに原因があるようで、

の2通りで同じKvasirへアクセスした場合、後者だと現象が発生します。

前者で矢印を取得に行くURL:

http://localhost:9846/kvasir/manage/layout.newPops.do?offset=-1&start=http%3A%2F%2Flocalhost%3A9846%2Fkvasir%2F&_=

前者のURLで矢印を取得に行くURL:

http://manhole.tdder.com/kvasir/manage/layout.newPops.do?offset=-1&start=http%3A%2F%2Fmanhole.tdder.com%2Fkvasir%2F&_=

で、前者のURLでは正常に矢印が表示されますが、後者のURLでは"エラーが発生しました。"というKvasirのエラーページが表示されてしまいます。



 Comments   
Comment by manhole [ 26/Feb/07 ]

Apacheのmod_proxyを通す場合に問題が出ることがわりました。

VirtualHostで次のように設定しています。

    ProxyPass /kvasir http://host2:9846/kvasir
    ProxyPassReverse /kvasir http://host2:9846/kvasir

Kvasirとしてはブラウザが送信したURLを知りたいのですが、
Apacheからの転送URL(http://host2:9846/kvasir)がリクエストヘッダに乗ってくるため、うまくパスを見つけられずにエラーとなってしまっているようです。

スタックトレースを下記に貼ります。revision 1808です。

2007-02-26 10:53:53,309 DEBUG btpool0-6 [StandardPageExceptionHandler] - Exception has occured 
java.lang.NullPointerException
  at org.seasar.kvasir.page.impl.PageAlfrImpl.findNearestPage(PageAlfrImpl.java:146)
  at org.seasar.kvasir.cms.manage.manage.web.LayoutPage.do_newPops(LayoutPage.java:522)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:585)
  at org.seasar.cms.ymir.impl.DefaultRequestProcessor.invokeAction(DefaultRequestProcessor.java:365)
  at org.seasar.cms.ymir.impl.DefaultRequestProcessor.process(DefaultRequestProcessor.java:195)
  at org.seasar.cms.ymir.impl.YmirImpl.processRequest(YmirImpl.java:103)
  at org.seasar.kvasir.cms.ymir.impl.YmirPageFilter.doFilter(YmirPageFilter.java:141)
  at org.seasar.kvasir.cms.filter.impl.FilteredPageFilter.doFilter(FilteredPageFilter.java:57)
  at org.seasar.kvasir.cms.filter.impl.PageFilterChainImpl.doFilter(PageFilterChainImpl.java:38)
  at org.seasar.kvasir.cms.filter.impl.GardRootChangePageFilter.doFilter(GardRootChangePageFilter.java:35)
  at org.seasar.kvasir.cms.filter.impl.PageFilterChainImpl.doFilter(PageFilterChainImpl.java:38)
  at org.seasar.kvasir.cms.filter.impl.PermissionPageFilter.doFilter(PermissionPageFilter.java:61)
  at org.seasar.kvasir.cms.filter.impl.FilteredPageFilter.doFilter(FilteredPageFilter.java:57)
  at org.seasar.kvasir.cms.filter.impl.PageFilterChainImpl.doFilter(PageFilterChainImpl.java:38)
  at org.seasar.kvasir.cms.filter.impl.ConcealPageFilter.doFilter(ConcealPageFilter.java:68)
  at org.seasar.kvasir.cms.filter.impl.FilteredPageFilter.doFilter(FilteredPageFilter.java:57)
  at org.seasar.kvasir.cms.filter.impl.PageFilterChainImpl.doFilter(PageFilterChainImpl.java:38)
  at org.seasar.kvasir.cms.filter.impl.GardRootChangePageFilter.doFilter(GardRootChangePageFilter.java:35)
  at org.seasar.kvasir.cms.filter.impl.PageFilterChainImpl.doFilter(PageFilterChainImpl.java:38)
  at org.seasar.kvasir.cms.filter.impl.ActorBindingPageFilter.doFilter(ActorBindingPageFilter.java:68)
  at org.seasar.kvasir.cms.filter.impl.FilteredPageFilter.doFilter(FilteredPageFilter.java:57)
  at org.seasar.kvasir.cms.filter.impl.PageFilterChainImpl.doFilter(PageFilterChainImpl.java:38)
  at org.seasar.kvasir.cms.filter.impl.GardRootChangePageFilter.doFilter(GardRootChangePageFilter.java:35)
  at org.seasar.kvasir.cms.filter.impl.PageFilterChainImpl.doFilter(PageFilterChainImpl.java:38)
  at org.seasar.kvasir.cms.filter.impl.BasicAuthenticationPageFilter.doFilter(BasicAuthenticationPageFilter.java:86)
  at org.seasar.kvasir.cms.filter.impl.FilteredPageFilter.doFilter(FilteredPageFilter.java:57)
  at org.seasar.kvasir.cms.filter.impl.PageFilterChainImpl.doFilter(PageFilterChainImpl.java:38)
  at org.seasar.kvasir.cms.filter.impl.GardRootChangePageFilter.doFilter(GardRootChangePageFilter.java:35)
  at org.seasar.kvasir.cms.filter.impl.PageFilterChainImpl.doFilter(PageFilterChainImpl.java:38)
  at org.seasar.kvasir.cms.ymir.impl.MultipartRequestPageFilter.doFilter(MultipartRequestPageFilter.java:63)
  at org.seasar.kvasir.cms.filter.impl.FilteredPageFilter.doFilter(FilteredPageFilter.java:57)
  at org.seasar.kvasir.cms.filter.impl.PageFilterChainImpl.doFilter(PageFilterChainImpl.java:38)
  at org.seasar.kvasir.cms.filter.impl.SetCharacterEncodingPageFilter.doFilter(SetCharacterEncodingPageFilter.java:58)
  at org.seasar.kvasir.cms.filter.impl.FilteredPageFilter.doFilter(FilteredPageFilter.java:57)
  at org.seasar.kvasir.cms.filter.impl.PageFilterChainImpl.doFilter(PageFilterChainImpl.java:38)
  at org.seasar.kvasir.cms.filter.impl.FilteredPageFilter.doFilter(FilteredPageFilter.java:59)
  at org.seasar.kvasir.cms.filter.impl.PageFilterChainImpl.doFilter(PageFilterChainImpl.java:38)
  at org.seasar.kvasir.cms.filter.impl.GardRootChangePageFilter.doFilter(GardRootChangePageFilter.java:35)
  at org.seasar.kvasir.cms.filter.impl.PageFilterChainImpl.doFilter(PageFilterChainImpl.java:38)
  at org.seasar.kvasir.cms.filter.impl.PageRequestFilter.processChain(PageRequestFilter.java:241)
  at org.seasar.kvasir.cms.filter.impl.PageRequestFilter.doFilter(PageRequestFilter.java:168)
  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.filter.impl.ServletRequestFilter$1.doFilter(ServletRequestFilter.java:48)
  at org.seasar.cms.webdavjp.RequestURIDecodingFilter.doFilter(RequestURIDecodingFilter.java:174)
  at org.seasar.kvasir.webapp.filter.impl.ServletRequestFilter.doFilter(ServletRequestFilter.java:43)
  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:242)
  at org.seasar.kvasir.webapp.servlet.KvasirFilter.doFilter(KvasirFilter.java:176)
  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1045)
  at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:358)
  at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:231)
  at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:629)
  at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:453)
  at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
  at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123)
  at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
  at org.mortbay.jetty.Server.handle(Server.java:303)
  at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:452)
  at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:721)
  at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:509)
  at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
  at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:349)
  at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:320)
  at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
Comment by manhole [ 27/Feb/07 ]

Apacheの設定が足りていなかったことが原因。

VirtualHostへ

ProxyPreserveHost On

を追加したところ、OKになりました。

Comment by skirnir [ 27/Feb/07 ]

Apache側の設定で回避できたのですね。(できれば後日にでも公式サイトのFAQに
Apache+Kvasir連携方法のドキュメントを書いておいて下さい)

で、Kvasir側でも対応をしちゃったのでコミットします。具体的には、ホスト名部分の
差異を気にしないようにしました。(コンテキストパスはどうしようもない)

Generated at Thu Aug 13 03:16:37 JST 2020 using JIRA 7.9.2#79002-sha1:3bb15b68ecd99a30eb364c4c1a393359bcad6278.