我有问题。我将两个网络应用程序部署为战争。我们称他们为app1.war
和app2.war
。
我希望通过网址app1.war
访问www.website.com
,我希望app2.war
可以www.website.com/anotherapp
访问。我准备好了我的域名。
虚拟主机似乎没有帮助。
我正在运行JBoss App Server 5.1和Seam 2.2.0。我正在努力将一个论坛(部署为战争)与我的应用程序集成(部署为另一个战争),因此需要使用单点登录,因此需要上面描述的URL格式以便于传递sso cookie。
感谢您的任何见解。
- 查尔斯。
答案 0 :(得分:4)
你需要做这些事情:
将JBoss配置为使用www.website.com名称的虚拟主机。
您可以通过编辑server.xml
目录中的jbossweb.sar
来完成此操作。简而言之,您必须设置另一个Host
指令。
您必须设置战争应用程序。您可以通过创建或编辑jboss-web.xml
文件(它应放在WEB-INF
目录中)来完成。在该文件中,您可以配置应使用的虚拟主机以及在何种上下文中。
app1.war
的该文件示例<jboss-web>
<context-root>/</context-root>
<virtual-host>website</virtual-host>
</jboss-web>
app2.war
的该文件示例<jboss-web>
<context-root>/anotherapp</context-root>
<virtual-host>website</virtual-host>
</jboss-web>
您可以在该帖子中找到更多信息Hosting Multiple Domains With JBoss
答案 1 :(得分:1)
一段时间没有使用JBoss或者根本没有使用过Seam,但是如果它像大多数应用程序服务器一样,那么将会有一个XML文件,其中包含一些描述,您可以将URL模式与应用程序相匹配。检查文档以获取详细信息,但我认为您需要web.xml和一些servlet条目,如:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.seam</url-pattern>
</servlet-mapping>
相应地更改url-pattern和servlet。
答案 2 :(得分:1)
我希望通过以下网址访问app1.war:www.website.com,我希望app2.war可以访问www.website.com/anotherapp。我当然准备好了我的域名。
实现特定用例的最简单方法是将app1.war部署到ROOT.war,将app2.war部署到/ deploy目录中的anotherapp.war。当您使用爆炸战争部署时,这种方法效果最佳。
如果您不想重命名爆炸的war文件夹,可以使用符号链接。
答案 3 :(得分:1)
要为servlet容器中的所有Web应用程序提供相同的会话cookie,请将SessionCookie添加到deploy / jbossweb.sar / context.xml:
<Context>
...
<SessionCookie path="/" />
</Context>
如果您不想将ROOT.war重命名为其他内容并让app1.war获取ROOT.war-name(我不明白为什么不这样做),也许您可以执行一些apache重定向/重写/代理东西隐藏app1的真实上下文根