我有一些Java EE Web应用程序的部署模型问题。目前,我们正在将我们的Web应用程序部署为Tomcat 6中的WAR文件。所有内容都与WAR文件一起打包,包括静态内容,如图像,静态html页面等。但我想在HTTP服务器中部署这些静态内容,并仅使用Application服务器来检索动态内容。我如何拆分这些东西?是否有任何人做过这种事情,并为我的场景提供了良好的部署模型。将不胜感激。
将2个WAR文件只用静态内容制作一个是一个好主意,并将该WAR部署在HTTP服务器中,其余部分作为不同的WAR文件部署并部署在应用服务器中?但是这种方法会对当前引用静态内容的所有页面产生影响,并且需要更改代码,这是非常麻烦的,因为我们的项目是巨大的,并且基于代码非常大。
欢迎任何策略和想法。
答案 0 :(得分:1)
出于性能原因,这可能是一件有趣的事情。
您应该有单独的部署脚本/部署文件来执行此操作。 为一个项目部署多个文件/ WAR /文件夹/脚本不是问题。当您必须部署WAR并更新数据库时,我们会有同样的事情。
我会有一个WAR文件和一个包含要部署的静态内容的文件夹。
修改强>
在HTTP服务器中部署静态内容取决于服务器。 如果要在Linux服务器上使用Apache,则必须设置Virtual Host。
<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
路径。
您可以在文档中找到更多示例和配置选项。
答案 1 :(得分:0)
您无法将WAR
文件部署到HTTP
服务器中。 WAR
用于Java
Web应用程序,它必须部署到应用程序服务器或servlet容器中(如Tomcat
)。我不认为在单独的Web应用程序中分离静态内容是个好主意。如果这是一个项目,它应该是一个Web应用程序,除了:
WAR文件具有特殊的文件夹结构并包含特殊文件 除了JSP页面,Java servlet,Java类,HTML页面等。 它组合形成了一个Web应用程序。
您可以在一个应用程序中保存静态内容,但实际上并没有什么不妥。
如果您的项目非常庞大并且有很多文件就没问题,您只需要使用这样的项目结构,它应该易于理解和读取,并且应用程序服务器或servlet容器将负责部署尽可能多的内容。
答案 2 :(得分:0)
直到版本4,Tomcat在提供静态内容方面一直很慢。这就是为什么经常建议将动态从静态内容中分离出来并使用常规Web服务器为后者服务(你提到的那本书是在2002年发布的......)。最近的Tomcat版本没有遇到这个问题,因此你可以避免分裂,这可能是组织和安全的噩梦。
对于静态资源,您可能更关注配置正确的缓存,因此不会更频繁地传输它们。