0

Moqui でパブリック Web サイトをセットアップするのに苦労しています。パブリック マーケティング サイトとサインアップ フォームとして (dev-)www.example.net を使用しようとしています。次に、[tennant-name].example.net のテナント基本的なコンポーネントをセットアップしてから、MoquiDevConf.xml を編集し、以下に示すように webapp-list を変更しました。

<webapp-list>
    <webapp name="webpublic" http-port="8080" https-enabled="false">
        <root-screen host="dev-www.example.net" location="component://webpublic/screen/webpublic.xml"/>
    </webapp>
    <webapp name="webroot" http-port="8080" https-enabled="false">
        <root-screen host="^((?!dev-www.example.net).)*$" location="component://webroot/screen/webroot.xml"/>
    </webapp>
</webapp-list>

変更を有効にするためにアプリを再起動しましたが、 http://dev-www.example.net:8080 / にアクセスしようとすると、エラー 500 しか表示されません。

org.moqui.BaseException: Could not find root screen for host [dev-www.example.net]

ログでこれを見る限り、Moquiはコンポーネントを見つけていると言えます:

Added component [webpublic] at [file:/Volumes/MacHDD/Sources/atlas-moqui/runtime/component/webpublic] 

非 dev-www ホストは引き続き機能し、通常のログイン画面が表示されるので、これは既存の webroot のほぼ直接のコピーであるため、何が欠けているのかわかりませんか?

助けてくれてありがとう!サム

4

2 に答える 2

0

特定の構成が機能しない理由についての私の推測は、root-screen.@host 属性が常に正規表現であり、使用している URL に「-」や「.」などの特殊文字が含まれていることです。これらの文字を「\」でエスケープするとうまくいくはずです。つまり、「.」を使用します。と '-'。

つまり、複数のテナントに対して同じ webapp ルートを持つ仮想ホストをサポートする場合は、この方法で仮想ホストを宣言する必要はありません。これは、別の webapp ルート画面が必要な場合にのみ必要です (最終的にはやってみたいです)。

更新: 上記の構成スニペットでは、複数の webapp-list.webapp 要素があり、そのうちの 1 つは name=webroot であり、これは使用される webapp (moqui-name context-param の web.xml ファイルで指定されている) であり、構成が web.xml ファイルからの名前に基づいて検出されるため、無視される name=webpublic のもう 1 つ。

解決策は、両方の root-screen 要素を name=webroot の webapp 要素の下に置くことです。基本的に、これらが検索される方法は任意ではなく、webapp 名 (moqui-name context-param) に対して明示的です。複数の webapps を展開している場合は、異なる構成を参照するために異なる moqui-name 値が必要です。これは、Winstone 以外の Tomcat などで行うのが最適です。また、文書化された Moqui の展開方法から逸脱する可能性があるため、もう少し作業を行う必要があります。必要に応じて、複数のルート画面要素と複数のルート画面を使用して、同じ webapp ですべてを実行することをお勧めします。

于 2015-02-04T02:56:18.430 に答える