Java EE 应用程序中静态和动态内容的分离
-
21-09-2019 - |
题
我们使用 IBM 产品,通常使用 IBM Http Server(即 Apache)作为应用程序服务器的反向代理。出于性能原因,我们从 http 服务器提供静态内容(.gif、.jpg、.css、.html 等),以减轻应用程序服务器的负担。
到目前为止,我们必须将文件分发到 http 服务器并手动配置它(最好编写自定义脚本)。问题是保持所有内容同步所需的努力,尤其是当您需要更新应用程序时。
有任何 Java EE 产品支持这种“开箱即用”吗?有没有办法让应用程序服务器自动执行此操作,例如在集群配置中,主节点负责将应用程序分发到其他节点并保持所有内容同步。
解决方案
到目前为止,我们必须将文件分发到http服务器并手动配置它(最多编写自定义脚本。)
不确定我是否得到了配置部分。通常很容易区分静态内容与 JSP 和 Servlet(一旦完成,就不会发生太大变化)。
问题是需要付出努力才能保持一切同步,尤其是当您需要更新应用程序时。
自动化!和 梅文 (或者 蚂蚁, ,但这需要更多的工作),很容易从 Web 项目创建单独的程序集来处理此问题:Java EE 节点的 WAR,HTTP 服务器的静态内容的 zip。
有任何 Java EE 产品支持这种“开箱即用”吗?
据我所知,不。令人惊讶的是,部署是 Java EE 的薄弱领域。但是您可以使用 Maven 和/或等工具达到相当程度的自动化 控制层.
其他提示
我不熟悉的IBM产品,但通常的做法是将应用程序部署(大部分的WAR)的目录,而不是战争的文件,这样你就可以访问自己的文件。比,你的部署目录映射到Apache的别名,所以它可以从那里提供静态内容。请注意,你需要阻止所有访问到WEB-INF目录下,并且所有请求路由到文件(.JSP,.jsf,。做,.action等)的JSP应用服务器。
禁止WEB-INF完成使用以下指令:
<DirectoryMatch "(WEB-INF|META-INF)">
Order allow,deny
Deny from all
AllowOverride None
</DirectoryMatch>