一个域上有两个具有不同上下文根的Web应用程序?

时间:2011-02-10 03:48:14

标签: jboss dns seam single-sign-on

我有问题。我将两个网络应用程序部署为战争。我们称他们为app1.warapp2.war

我希望通过网址app1.war访问www.website.com,我希望app2.war可以www.website.com/anotherapp访问。我准备好了我的域名。

虚拟主机似乎没有帮助。

我正在运行JBoss App Server 5.1和Seam 2.2.0。我正在努力将一个论坛(部署为战争)与我的应用程序集成(部署为另一个战争),因此需要使用单点登录,因此需要上面描述的URL格式以便于传递sso cookie。

感谢您的任何见解。

- 查尔斯。

4 个答案:

答案 0 :(得分:4)

你需要做这些事情:

  1. 将JBoss配置为使用www.website.com名称的虚拟主机。

    您可以通过编辑server.xml目录中的jbossweb.sar来完成此操作。简而言之,您必须设置另一个Host指令。

  2. 您必须设置战争应用程序。您可以通过创建或编辑jboss-web.xml文件(它应放在WEB-INF目录中)来完成。在该文件中,您可以配置应使用的虚拟主机以及在何种上下文中。

  3. 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的真实上下文根