2012-09-18 48 views
5

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

这是个好主意,以2 WAR文件一个只有静态内容和部署HTTP服务器WAR,其余为不同的WAR文件,并在应用服务器上部署了吗?但是,这种方法会影响静态内容当前被引用的所有页面,并且需要更改代码,这非常麻烦,因为我们的项目非常庞大,代码基础非常庞大。

任何战略和想法,欢迎。

+0

为什么要拆分静态和动态内容?这是组织考虑还是你想提高性能? –

+0

感谢您的意见,我感谢每一位的评论。好的学习曲线对我来说。 我想同时使用HTTP服务器和应用程序服务器来改善我的Web应用程序的性能。我一直在读一本名为“Java™网站性能分析”的书。并建议我将我的静态内容放入HTTP服务器和Dynamic server中的Dynamic内容。但我不知道如何切实做到这一点。我所知道的是如何构建WAR文件并在Tomcat中部署,这是我们用于部署的App服务器。 –

+0

所以我的问题可以修改如下。 如何在HTTP服务器中部署我的静态内容?如果我在这方面得到了一些帮助,那么我可以继续并从WAR文件中删除所有静态内容,并将其部署到HTTP服务器以及应用程序服务器中WAR内的其余文件。 –

回答

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路径。

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

+0

如何将我的静态内容部署到HTTP服务器中?如果我在这方面得到了一些帮助,那么我可以继续并从WAR文件中删除所有静态内容,并将其部署到HTTP服务器以及应用程序服务器中WAR内的其余文件。 –

0

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

WAR文件有一个特殊的文件夹结构,除了包含JSP页面,Java servlet为,Java类,HTML页面等 特殊文件 它们组合起来形成一个Web应用

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

如果你的项目是非常巨大的,有很多文件,这是没有问题的,你只需要使用项目结构这样,它应该是很容易理解的,可读和应用程序服务器或servlet容器会照顾部署尽可能多的内容。

+0

我感谢您的输入......但我的要求是将我的静态内容部署到HTTP服务器中,以提高我的Web应用程序的性能。我不确定如何在HTTP服务器中捆绑和部署静态内容,并在部署在Tomcat容器上的WAR文件内部从JSP访问它。对此的任何帮助将会很棒... –

0

直到第4版,Tomcat在提供静态内容方面一直很慢。这就是为什么它经常被推荐从静态内容中分离动态并使用普通的Web服务器为后者服务(你提到的这本书是在2002年发布的......)。最近的Tomcat版本不会遇到这个问题,因此你可以避免分裂,这对组织和安全来说都是一场噩梦。

对于静态资源,您可能更关注配置适当的缓存,因此它们不会被传输得比所需的次数多。

+0

是的缓存是我想看的另一个领域。事实上,我们已经开始寻找经常使用的主表相关查询和一些缓存方法。一种方法是在Web应用程序启动时将这些查询的结果加载到内存中并使用它。一个问题是在主表数据更改时刷新内存中的东西......但是会分别查看这个缓存问题......只是想分享一下我们也在研究这方面的内容...... –

+0

从db缓存数据是一个不同的问题 - 我的意思是为Web服务器中的静态资源设置缓存头,因此浏览器只会获取一次。 –

相关问题