3

我对 Java 应用程序服务器的角色及其与 Web 服务器的区别感到有些困惑。
我发现许多网站解释了两者之间的相同差异,但并不令我满意。
因此,请向我解释以下两种情况:-

1)应用程序。服务器及其与Web服务器的区别:

从这两个链接:
应用服务器和servlet容器之间的区别?
应用服务器和Web服务器有什么区别?

Web 服务器:它通过 http 协议处理一切,通过接受来自客户端的请求并在其 servlet 容器(例如 Apache Tomcat
的帮助下向它们发送响应服务器:应用服务器支持整个 JavaEE,如 JMS、JPA、RPC 等。

现在我感到困惑的是,如何通过在我的 Web 应用程序中
添加它们的jar文件来将JMS、JPA 等大量 JavaEE API 与我的 Tomcat 一起使用?
这是否意味着如果我使用应用程序服务器,我不必添加那些jar文件?(我不这么认为

2)应用程序的角色。服务器(这对我来说很重要)

来自维基百科
http://en.wikipedia.org/wiki/Application_Server

应用服务器提供诸如安全、事务支持等服务。
“该术语通常用于支持 JavaEE 的 Web 服务器” ——听起来如果我们添加JavaEE API所需的jar文件,Web 服务器就变成了一个应用程序。服务器。怎么样。

现在我的问题是应用服务器如何自己执行安全控制或事务管理的任务
例如,在我使用 Spring 框架的 Web 应用程序中,我通过使用 spring-security 和事务管理来提供安全性,通过使用 @Transactional 注释和所有你知道的东西。
应用程序也是如此。服务器与我的安全或事务管理有什么关系,或者它有自己的方式?

原谅我的无知。

4

3 回答 3

3

使用 Spring,您实际上是在应用程序中嵌入了某种 Java EE 容器。但是即使在使用 Spring 时,如果您需要 JTA 支持(因为您需要分布式 XA 事务),您也需要使用额外的事务管理器。如果需要 JMS,则需要安装额外的 JMS 代理。如果您需要连接池,则需要使用额外的连接池。有时它就像向类路径和属性或 XML 文件中添加额外的 jar 一样简单。有时更难。

Java EE 应用程序服务器捆绑了所有内容。您的灵活性较低,但您不需要自己安装、配置和让一切工作。

于 2012-06-07T08:46:05.813 回答
2

当您使用 时Java EE framework,这是一个规范。所以应用服务器,如果是的话Java EE compliant,需要实现这个。因此,一旦实现了规范,它就会解决Securitytransaction等等,因为它在规范中被提及。所以这是一份合同。而在 a 中web server,它只会提取您的静态资源。不需要处理其他的东西。

在这种情况下Spring framework,框架知道如何处理事务、安全性等。因此,开发人员尤其不需要研究在其他场景中由应用服务器实现的这些方面。

应用服务器如何自行执行安全控制或事务管理的任务

解决这些问题的是规范,而不是应用程序服务器。所以,应用服务器的职责就是实现这些。因此,如果您的应用程序是Java EE compliant,那么这些区域将得到解决,并且实施将由应用服务器完成。

于 2012-06-07T08:43:55.970 回答
1

可能这是过于简单化了,

Web 服务器基本上是通过 http 协议提供内容的 HTTP 服务器。因此,Web 服务器只是通过 http 协议提供内容。一个典型的例子是Apache Web 服务器。这只是一个文件服务器。

现在的问题是Web 服务器从哪里获取内容?可能的来源是

  1. 静态内容(图像/css 等内容)不是根据请求生成但静态提供的。
  2. 动态内容:简单地说,要服务的内容是根据用户请求生成的。

对于静态内容,Web 服务器不需要任何东西,因为它只是读取文件并提供服务。

对于动态内容,Web 服务器可能需要其他组件的帮助,这些组件将生成要提供的内容。

在这里,应用程序服务器出现了。

现在,前面提到的这些附加组件可能与数据库或其他一些系统等进行交互。

在您的网站暴露给大量用户(有意/无意)的 Web 环境中,您需要诸如事务/安全/并发等典型服务,以便用户获得预期的响应并且不会看到应用程序行为的不一致.

应用程序服务器具有管理事务/安全/并发/资源管理的内置功能。通常这些被称为托管服务,它们提供的环境称为托管环境,其中这些基本服务由应用程序服务器管理,程序员不必为它们烦恼。

Application Server 需要 Web 服务器,或者我们可以说 Web 服务器使用 Application Server 的服务来生成动态内容。

例如,JBoss使用 Tomcat 作为内置 Web 服务器。而网络逻辑有自己的网络服务器。Tomcat再次可以称为应用程序服务器(原则上),因为它还为 servlet 提供托管环境(它管理并发和 servlet/JSP 的实例池)。

以您的 Spring 为例: 无论您是否需要,应用程序服务器都将内置事务/安全等。Spring 提供了一种非常好的方法来处理这个问题。Spring拥有所有这些东西,但你使用你需要的东西。不只是这些,只要像 Tomcat 这样的 Java Web Sever 就足以构建一个需要应用服务器的成熟服务。

于 2012-06-07T09:29:15.647 回答