添加第二个webapp

时间:2015-02-03 07:54:44

标签: moqui

我正在努力在Moqui建立一个公共网站,我正在尝试将(dev-)www.example.net作为公共营销网站和注册表单。然后是[tennant-name] .example.net上的租户我已经设置了basic component然后编辑了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的直接副本?

感谢您的帮助! 萨姆

2 个答案:

答案 0 :(得分:0)

您可能使用相同的端口号。尝试使用不同的(例如8081)作为第二个。所有使用的端口应该是不同的。请看我的评论。

答案 1 :(得分:0)

我猜你的特定配置无效的原因是root-screen。@ host属性始终是正则表达式,而你使用的URL包含特殊字符,包括&#39; - &#39;和&#39;。&#39;。如果你用“&#39;”来逃避这些字符,它应该有用,即使用&#39;。&#39;和&#39; - &#39;。

也就是说,如果您想为多个租户支持具有相同webapp根的虚拟主机,您不需要以这种方式声明虚拟主机,只有在需要不同的webapp根屏幕时才需要这样做(可能是你最终想做的事情。)

更新:使用上面的配置代码段,问题是有多个webapp-list.webapp元素,一个名称= webroot,这是使用的webapp(在moqui-name上下文中的web.xml文件中指定) param)和另一个name = webpublic被忽略,因为根据web.xml文件中的名称找到了配置。

解决方案是将两个根屏幕元素放在名为webroot的webapp元素下。基本上查找它们的方式并不是随意的,它是明确的webapp名称(moqui-name context-param)。如果您部署了多个Web应用程序,则它们应具有不同的moqui-name值以引用不同的配置。这最好是在Winstone之类的东西上完成,比如Tomcat。它也会偏离部署Moqui的记录方式,因此需要做更多的工作。这样做没有任何意义,最好根据需要在具有多个根屏元素和多个根屏幕的同一个webapp中运行所有内容。