2011-08-23 39 views
1

我有一个web应用程序,它目前使用外部目录来托管Spring webapp中的静态文件,例如css,velocity。也就是说,该目录在tomcat的webapp目录内,但不在WAR内。用于战争部署的外部和内部资源,例如Tomcat

除了无需轻松编辑这些资源而无需重新编译打包部署的功能,在战争中不包括这些文件还有什么好处。

我似乎记得被告知长时间AGO Tomcat在提供文件静态文件方面表现不佳,但我没有任何经验支持这一点。据我所知,唯一的优点是易于编辑。

+0

你是什么意思的'外部目录'?你是否已经有了一个Web服务器(如Apache HTTP Server)来提供这些静态文件? – home

+0

当前的设置是Apache HTTPd和通常连接到Tomcat的连接器。外部资源目录与未爆炸的WAR位于相同的文件夹中。在我的理想世界中,我只是有Tomcat和战争,但我很好奇目前的配置是否有任何优势,除了轻松编辑css/html/velocity/etc – SilentICE

回答

0

通常,在应用程序服务器图案前面的web服务器仍然是有效的:

  1. web服务器提供TLS/SSL终止;客户端通过HTTPS与您的URL通信,Web服务器终止SSL并将纯HTTP消息转发到您的应用服务器(tomcat)。在这种情况下的Web服务器可以接管所造成的加密(CPU利用率)
  2. Web服务器提供静态内容的负荷;当涉及到大量静态内容的高流量站点或站点时,web服务器可以提供静态内容。想象一下提供包含高分辨率图像(比如> 1m)的产品目录的应用程序。直接从应用程序服务器下载图像需要在应用程序服务器上有一个线程。它还可以减少应用程序服务器节点上的网络I/O。
  3. web服务器在非军事区(DMZ);这是企业部署中的一种常见模式。 网络服务器托管在公众可以使用的区域中,而您的应用程序服务器仅托管在网络服务器可用的内部区域中。这引入了另一层安全性。
  4. web服务器提供静态缓存; web服务器像Apache在缓存方面表现不错。

毫无疑问,这取决于你的使用情况下,它可能会有所不同:

  1. 你获得的,如果你的Web服务器驻留在不同的服务器节点上,因为它是关于计算能力上面提供的例子最具优势( CPU在这种情况下)。
  2. 一如既往分布式计算在这种情况下引入了一层复杂性,部署和管理。
  3. 在两者上建立相同的安全方法,网络服务器应用程序服务器可能变得棘手,例如,只有某些用户被允许访问某些图像。

具有相同的节点上Web服务器应用服务器减少提供Web服务器的优势。我的经验是,当涉及到“少数用户”使用的“较小”的内部应用程序时,Web服务器不是必需的,并且tomcat服务良好。如果您的应用只提供一些静态文件,如图标,cssjavascript,则更是如此。

希望这有助于...

+0

谢谢你是一个非常好的答案!因此,如果我在我的设置中正确理解应用程序服务器(tomcat)提供静态资源而不是web应用程序,所以我没有任何优势(缓存,减少的内部网络通信等),对我而言真的如此没有超出可编辑性的理由。也许我应该考虑将静态资源移动到Web服务器。 – SilentICE

+0

@SilentICE:我认为这取决于。如果您的应用程序今天运行良好,则可能不需要Web服务器。如果你计划增长或想要解决一些安全问题(DMZ),它可能是有道理的。使用['mod_jk'](http://tomcat.apache.org/connectors-doc/index.html)集成相当容易。 – home