我有这样的application.xml。
<module> <web> <web-uri>services-inboxService.war</web-uri> <context-root>/services/inboxService</context-root> </web> </module>
我想将不同的上下文根映射到一个web-uri。但是存在约束,每个模块应该只包含一个 web 部分,每个 web - 只有一个 context-root 部分。 有没有办法除了复制这个命名方式不同的战争文件?
答案 0 :(得分:5)
Yegoshin Maxim-我相信您必须清楚基于Java EE的Web应用程序中的URI概念:
<hostname:port/context-root/resource-path?parameters>
现在,如果有人想要使用不同的主机名+端口组合来由同一个已安装的应用程序提供服务,那么他们应该使用虚拟主机的概念,这主要受到Tomcat,WebSphere等应用服务器的支持。
如果有人想使用不同的资源路径映射到Web应用程序中的相同资源,可以通过在web.xml中配置url-pattern来完成
现在,如果有人想要为应用程序的单个安装使用不同的上下文根,则无法实现。即使你从类加载器的角度来看也是如此。上下文导致创建上下文类加载器,它是app server类加载器的子代。我们不能为一个Web应用程序提供多个上下文类加载器,否则无法解析资源/类引用。因此,唯一的解决方案是让应用程序的多个实例在不同的上下文根目录下运行。