Redirect 一个应用程序的多个上下文根

Redirect 一个应用程序的多个上下文根,redirect,jboss,forwarding,mdm,Redirect,Jboss,Forwarding,Mdm,我们已经重命名了Apple MDM使用的上下文根,现在需要与已经注册的设备向后兼容。 我们正在运行JBoss 我的第一次尝试只是向application.xml添加第二个模块条目,该条目具有新的上下文根,但具有相同的war文件。我没有工作,除非我用一个新名字复制了一份war文件。我真的不喜欢这个解决方案,尽管它有效 相反,我尝试向根应用程序添加一个阀门,然后将旧的上下文根重定向到新的。这也非常有效,直到设备发出帖子,然后发布的二进制内容丢失。 此解决方案的好处是,我们可以建立一个新的上下文根,为

我们已经重命名了Apple MDM使用的上下文根,现在需要与已经注册的设备向后兼容。 我们正在运行JBoss

我的第一次尝试只是向application.xml添加第二个模块条目,该条目具有新的上下文根,但具有相同的war文件。我没有工作,除非我用一个新名字复制了一份war文件。我真的不喜欢这个解决方案,尽管它有效

相反,我尝试向根应用程序添加一个阀门,然后将旧的上下文根重定向到新的。这也非常有效,直到设备发出帖子,然后发布的二进制内容丢失。
此解决方案的好处是,我们可以建立一个新的上下文根,为处理Android和Windows Phone的MDM做好准备


这可以通过转发来实现吗?然后应该如何实现呢?

在我们公司,我们使用代理来解决此类问题,这样客户机就不会直接访问JBoss服务器,而是直接访问代理,代理会重定向到JBoss。我们使用带有mod_代理的apacheweb服务器

因此,使用Apache的mod_proxy,您可以设置它:

# for the newcontext
ProxyPass /newcontext http://jbosserver.com/newcontext
ProxyPassReverse /newcontext http://jbossserver.com/newcontex
# for the oldcontext
ProxyPass /oldcontext http://jbosserver.com/newcontext
ProxyPassReverse /oldcontext http://jbosserver.com/newcontext
因此,如果代理的名称为apacheserver.com,您可以通过以下方式访问该服务: 或

这种体系结构的另一个优点是,它为您提供了额外的安全性,因为客户端不直接访问Web服务器。当然,您不仅限于一个上下文,还可以在apache中创建任意数量的上下文


我希望这会有所帮助。

谢谢托尼的精彩描述。我会看看你的建议。这将取决于我们是否能够在安装程序中打包代理,以使其对客户透明。我认为这不应该是个问题。我们使用apache,它是一个外部代理,不能嵌入java应用程序中。但是,如果您不想使用apache,可以在同一ear文件中创建一个简单的servlet,该servlet打包到war(可通过旧上下文访问)中,它只是将调用重定向到应用程序war的上下文。