Uploaded image for project: 'Kvasir/Sora'
  1. Kvasir/Sora
  2. KVASIR-113

サイト編集画面左下の矢印表示欄にERRORが表示される

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 3.0.0-EA4-SNAPSHOT
    • Fix Version/s: 3.0.0-RC1
    • Component/s: None
    • 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のエラーページが表示されてしまいます。

        Activity

        Hide
        manhole manhole added a comment -

        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)
        
        Show
        manhole manhole added a comment - 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)
        Hide
        manhole manhole added a comment -

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

        VirtualHostへ

        ProxyPreserveHost On
        

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

        Show
        manhole manhole added a comment - Apacheの設定が足りていなかったことが原因。 VirtualHostへ ProxyPreserveHost On を追加したところ、OKになりました。
        Hide
        skirnir skirnir added a comment -

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

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

        Show
        skirnir skirnir added a comment - Apache側の設定で回避できたのですね。(できれば後日にでも公式サイトのFAQに Apache+Kvasir連携方法のドキュメントを書いておいて下さい) で、Kvasir側でも対応をしちゃったのでコミットします。具体的には、ホスト名部分の 差異を気にしないようにしました。(コンテキストパスはどうしようもない)

          People

          • Assignee:
            skirnir skirnir
            Reporter:
            manhole manhole
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development