我对Java EE web应用程序的部署模型有一些疑问。目前,我们在Tomcat6中将web应用程序部署为WAR文件。所有内容都与WAR文件打包在一起,包括图像、静态html页面等静态内容。但我希望将这些静态内容部署在HTTP服务器中,并仅使用Application服务器来检索动态内容。我如何拆分这些东西?有没有人做过这样的事情,并且为我的场景建立了一个好的部署模型。我们将非常感谢您的帮助。
创建两个WAR文件,其中一个只包含静态内容,并将其部署到HTTP服务器中,其余作为不同的WAR文件部署到应用程序服务器中,这是不是一个好主意?但是这种方法会对当前引用静态内容的所有页面产生影响,并且需要更改代码,这是非常麻烦的,因为我们的项目非常庞大,基于代码的页面非常非常大。
欢迎任何策略和想法。
发布于 2012-09-18 18:00:25
出于性能方面的原因,这可能是一些有趣的事情。
您应该有单独的部署脚本/部署文件来执行此操作。为一个项目部署多个文件/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>
在本例中,您有一个虚拟主机,它侦听任意IP地址和服务器名称www.example.com
的80
端口。然后将其重定向到/www/domain
路径。
您可以在文档中找到更多的示例和配置选项。
发布于 2012-09-18 17:47:40
不能将WAR
文件部署到HTTP
服务器。servlet用于Java
web应用程序,它必须部署到应用服务器或servlet容器(如Tomcat
)中。我不认为在单独的web应用程序中分离静态内容是个好主意。如果这是一个项目,那么它应该是一个web应用程序,除此之外:
WAR文件具有特殊的文件夹结构,除了JSP页、Java、Java类、
页等组合形成应用程序外,还包含特殊的文件。
你可以在你的一个应用程序中保存你的静态内容,这并没有什么坏处。
如果你的项目很大,有很多文件,这是没有问题的,你只需要使用这样的项目结构,它应该很容易理解和阅读,应用服务器或servlet容器将负责部署尽可能多的内容。
发布于 2012-09-18 18:43:23
直到版本4,Tomcat在提供静态内容方面都相当缓慢。这就是为什么人们经常建议将动态内容从静态内容中分离出来,并使用常规的web服务器为后者提供服务(您提到的这本书是在2002年发行的……)。最近的Tomcat版本没有面临这个问题,因此您可以避免拆分,这可能是组织和安全的噩梦。
对于静态资源,您可能更倾向于配置适当的缓存,以便在必要时不会频繁地传输它们。
https://stackoverflow.com/questions/12474089
复制相似问题