在EAR的多次战争中共享共同的jsp

Rak*_*yal 5 java ear jsp web-applications

我们有一个有13个模块的大型应用程序.根据客户要求,我们应该能够部署核心模块+客户特定模块.我们计划将应用程序分成多个战争.现在的问题是我们有一些常见的jsp,比如header.jsp,error.jsp等.有没有什么方法可以让我们在核心战争中保持常见的jsp,其余的战争将能够使用它或者我必须复制这些jsp在构建过程中的invidiual战争中.我知道CSS和Javascript文件可以在耳塞包装的多个战争中共享但不确定jsp的.

ska*_*man 4

好问题。您会很高兴听到答案是“是”,尽管这很大程度上取决于您的 servlet 容器的配置方式。

这是使用 JSTL<c:import>标签完成的,该标签有一个可选context属性,定义为:

要从中导入资源的其他本地 Web 应用程序的上下文名称(以 / 开头)。

假设您将 webapp A 部署在 context root 下/A,并将 webapp B 部署在 context root 下/B,那么 A 中的 JSP 可以x.jsp使用以下命令包含 B 中的内容:

<c:import context="/B" url="x.jsp"/>
Run Code Online (Sandbox Code Playgroud)

这一切都非常美好,但是这必须通过 servlet 容器的安全机制,并且可能不允许该操作。例如,在 Tomcat 中,该crossContext属性必须设置为true