2009-06-17 114 views
3

如果我们要将我们的Web服务器和应用程序服务器分开,我们是否需要在两台机器上都安装java?我有一位同事说在两台机器上都安装了jboss(如果两台机器都安装了应用服务器,似乎打败了目的),另一位说只在一台机器上安装jboss,另一台安装apache(应用服务器/ Web服务器)。分离Web服务器和应用程序服务器,都需要Java?

我已经安装了web项目,它使用servlet和JSP。 JSP在servlet执行操作时显示内容。 servlet接收请求并将响应转发给JSP。我的问题是我如何做到这一点,如果Web服务器只有Apache,并因此显示静态内容?我知道如何将请求从Web服务器转发到应用服务器,但是如何维护会话状态,是在Web服务器上完成的,如果是的话,它将如何完成?

如果登录页面是html,登录后的内容是html,那么如果他们没有登录,我怎么能阻止人们访问内容?

回答

8

您描述的后一种设置是通过Apache提供静态内容并将JSP/Servlet请求转发到应用服务器上的,这是标准设置。

会话状态保持正常,您的应用程序服务器上的Java web应用程序向用户发送一个包含JSESSIONID的cookie,并且当用户发出后续请求时,Apache将转发给它的所有请求信息(包括cookie)应用服务器。

如果您希望让Apache坐在前面并向多个JBoss实例请求负载均衡请求,安装程序会变得更复杂一些,但使用mod_proxy_balancer进行设置仍然非常容易。

一些链接,可以帮助你:

http://help.shadocms.com/blog/2009/how-to-setup-apache-with-jboss-on-a-shado-site.cfm http://redlumxn.blogspot.com/2008/01/configure-apache2-and-jboss-422ga.html

0

您的场景让我想起了SiteMinder。它被用来访问控制到我们的应用程序。它内置了HTTP转发功能,因此从用户的角度来看,浏览器会与siteminder和siteminder与真实应用程序交谈。他们都使用会话cookie和siteminder的名为SMSESSION,而应用程序的名为JSESSIONID,所以没有冲突。

+0

在两台机器上使用jboss(或tomcat),但使用一个作为Web服务器和一个作为应用程序服务器会更好吗?至少我可以在Web服务器上使用JSP,并仍然使用应用程序服务器来处理请求。 – ravun 2009-06-17 13:10:02

2

有很多可能性。

  1. 在web机器上安装apache mod_jk将请求重定向到tomcat/jboss。 在这种情况下,你不需要这台机器上的Java。

  2. 你也可以分开你的jsp容器(例如tomcat/jboss)和你的应用程序服务器,在这种情况下你需要安装Java你有你的web容器的地方。

  3. 一般来说,如果需要更高的安全性,人们会将上述可能性结合起来。薄网层(APACHE +没有java)+ Web容器(例如Tomcat)的+应用层(的JBoss/glassfish的)

第一个解决方案是通常的标准之一。

0

常见的部署是使用Apache前端服务器为静态内容提供动态内容并将请求转发到JSP服务器。这主要是出于性能原因,Apache在提供内容和减少JSP服务器上的负载方面速度更快。

我看不出任何原因,例如,使用IIS作为前端服务器(从等式中删除Java),尽管使用财富Apache模块和相关的配置信息,我想您可能会如果你这样做,你会为自己生活困难。

0

简短的回答 - 号

朗的答案 -

这取决于你的应用程序的需要。有几个原因,你会希望有一个不同的物理机器上的Web服务器:

  • 你想拥有Web服务器服务 静态内容,并离开应用程序 服务器自由只处理 servlet/jsp content

  • 您希望实现基于 负载均衡的软件。您将有
    Apache服务器请求代理到
    多个后备应用服务器

在登录例如,HTML页面被Apache服务,以及HTML表单点的行动,你的servlet处理 - 所以JBoss/java仍然会管理会话。请记住,您希望apache到服务器的任何静态内容都需要存在于Web服务器上。