我有一个 Web 应用程序大量使用 jspx-files 和jsp:include
-includes,它从同一个 jar 部署到 tomcat 中的数百个上下文。目前我们只能通过更改 CSS 或覆盖其他文件目录中的某些文件来修改每个实例的布局:
假设 webapp.jar 包含一个名为的文件/css/forms.css
,那么 webapp 确保将 GETtinghttp://mydomain/cust1/res/css/forms.css
映射到该文件。如果 webapp 被配置为在 "override directory" 中查找/data/cust1/
,那么如果有一个名为/data/cust1/css/forms.css
该文件的文件,则会从应用程序存档中的文件提供该文件。这是由 webapp 本身确保的。
在过去的几年里,这非常成功,但最近我感到了限制不能“覆盖”的或多或少的静态 jspx 的痛苦;)基本上我希望能够为每个文件“覆盖”一些 jspx 文件无需为每个上下文编译和部署自定义 webapp-jar 即可部署上下文。(拥有自定义something:includeJsp
标签不会有问题)。
基本上,webapp 应该能够为单个 jspx 文件提供对 jsp(x) 编译器的覆盖,例如,看看下面的示例结构:
<!-- webapp.jar:/jspx/view.jspx -->
<jsp:root ...>
<ns:customInclude src="inc/include.jspx" />
</jsp:root>
<!-- webapp.jar:/jspx/inc/include.jspx -->
<jsp:root ...>
Default-Markup from the webapp.jar
</jsp:root>
<!-- /data/cust1/jspx/inc/include.jspx -->
<jsp:root ...>
Custom markup for "cust1"
</jsp:root>
现在,当http://.../cust1/jspx/view.jspx
被请求时,我想/data/cust1/jspx/inc/include.jspx
由 Tomcat 编译和执行。基本上我知道实际上一切必要的东西在 Tomcat 中的某个地方已经是可能的(从 jspx 编译到 Java 字节码,包括文件,...),但我也知道 Tomcat/Jasper 遵守 jsp-spec。我通过查看代码发现这并不容易......
所以基本上,有谁知道如何让这样的设置工作?也许有人已经解决了这个问题?或者我目前的方法有其他选择吗?