6

我有一些关于 Java EE Web 应用程序的部署模型问题。目前我们在Tomcat 6中将我们的Web应用程序部署为WAR文件。所有内容都与WAR文件打包在一起,包括静态内容,如图像、静态html页面等。但我想将这些静态内容部署在 HTTP 服务器中,并仅使用应用程序服务器来检索动态内容。我如何拆分这些东西?有没有人做过这种事情并且对我的场景有一个很好的部署模型。帮助将不胜感激。

将 2 个 WAR 文件制作成一个只有静态内容的文件并将该 WAR 部署在 HTTP 服务器中,其余作为不同的 WAR 文件并将其部署在应用程序服务器中,这是一个好主意吗?但是这种方法会对当前引用静态内容的所有页面产生影响,并且需要更改代码,这非常麻烦,因为我们的项目非常庞大,并且基于代码的量非常大。

欢迎任何策略和想法。

4

3 回答 3

1

出于性能原因,这可能是一件有趣的事情。

您应该有单独的部署脚本/部署文件来执行此操作。为一个项目部署多个文件/WAR/文件夹/脚本不是问题。当您必须部署 WAR 和更新数据库时,我们也有同样的情况。

我将有一个 WAR 文件和一个包含要部署的静态内容的文件夹。


编辑

在 HTTP 服务器中部署静态内容取决于服务器。如果你想在 Linux 服务器上使用Apache,你必须设置一个虚拟主机

<VirtualHost *:80>
  # This first-listed virtual host is also the default for *:80
  ServerName www.example.com
  DocumentRoot /www/domain
</VirtualHost>

在此示例中,您有一个虚拟主机,它侦听80端口、任何 IP 地址和服务器名称www.example.com。然后将其重定向到/www/domain路径。

您将在文档中找到更多示例和配置选项。

于 2012-09-18T10:00:24.723 回答
0

在版本 4 之前,Tomcat 在提供静态内容方面一直很慢。这就是为什么经常建议将动态内容与静态内容分开并使用常规 Web 服务器为后者提供服务的原因(您提到的书是 2002 年发行的……)。最近的 Tomcat 版本没有遇到这个问题,因此恕我直言,您可以避免拆分,这对于组织和安全来说都是一场噩梦。

对于静态资源,您可能更愿意专注于配置适当的缓存,因此它们不会被不必要地频繁传输。

于 2012-09-18T10:43:23.203 回答
0

您不能将WAR文件部署到HTTP服务器中。AWAR用于JavaWeb 应用程序,它必须部署到应用程序服务器或 servlet 容器中(如Tomcat)。我认为在单独的 Web 应用程序中分离静态内容不是一个好主意。如果这是一个项目,它应该是一个 Web 应用程序,此外:

WAR 文件具有特殊的文件夹结构,除了 JSP 页面、Java servlet、Java 类、HTML 页面等之外还包含特殊文件,它们组合形成了 Web 应用程序。

您可以将静态内容保存在一个应用程序中,这确实没有什么不好的。

如果您的项目非常庞大并且有很多文件,那没问题,您只需要使用这样的项目结构,它应该易于理解和阅读,并且应用程序服务器或 servlet 容器将负责部署尽可能多的内容。

于 2012-09-18T09:47:39.870 回答