在 J2EE 服务器上交付服务时,REST 服务在哪些层工作?
Posted
技术标签:
【中文标题】在 J2EE 服务器上交付服务时,REST 服务在哪些层工作?【英文标题】:Which tiers do REST services work when delivering a service on a J2EE server? 【发布时间】:2019-09-13 15:20:09 【问题描述】:我对 J2EE 服务的有限理解如下:
J2EE 是一个四层架构,包括: (1)Client Tier (Presentation tier or Application tier), - 小程序 (2)Web 层,- JSP 的 (3)Enterprise JavaBeans 层(或应用服务器层) (4)EIS 或数据层 - 选择的数据库在这里。
客户端层创建由 Web 层解析的数据,然后将其转换为数据层的业务逻辑。
我只是在学习什么是 REST 服务,我很好奇在这个 4 层设置中你会将它们放在哪个阶段。
【问题讨论】:
【参考方案1】:一个有用的线程是关于层与层here:
从简化的物理角度来看,我们有客户端(浏览器)、应用程序服务器、数据库服务器。 从逻辑的角度来看,我们可能有不同的层(再次简化):网络、业务逻辑、数据。
分层的思想是首先分离关注点(表示,业务逻辑,持久性等),并且较高层只能调用下面的直接层(因此在Web层之前的示例中只能调用业务逻辑,它不应该调用数据层)。这样做的好处是每个层都有一个接口,该接口没有任何实现细节(代码到接口模式)就暴露出来,因此您可以交换该层的实现。因此,现在您可以将数据存储在关系数据库中,但您可以创建一个新的实现,将数据存储在 NoSql 数据库中(您不需要更改业务逻辑层的任何内容)。所以你有相同的数据层但不同的实现。
在传统的 java web 应用程序中,代码部署在应用程序服务器中,它的输出(servlet)通常是显示在浏览器中的 html。 因此,表示层(格式化等)是在服务器端为每个客户端(请求)完成的。在应用服务器中有客户端,我们有一个会话,因此每个客户端都有一个状态(例如:显示的语言数据、相应的日期格式等)。 REST 架构进行了更改,因为它促进了无状态操作。这样做的后果之一是使用会话变量在浏览器中移动任何与客户端相关的编码(javascript web 框架的出现),然后 web 层返回 JSON/XML 而不是 HTML。
要回答您的问题,您可能在业务逻辑之上有一个不同的 Web 层。一个可能会返回 HTML,另一个可能会返回 JSON(考虑一下数据层的示例)。
【讨论】:
以上是关于在 J2EE 服务器上交付服务时,REST 服务在哪些层工作?的主要内容,如果未能解决你的问题,请参考以下文章
我在 AWS Elastic BeanStalk Tomcat 6 服务器上使用啥版本的 J2EE?
在 Spring 或 J2EE 中上传到服务器时的视频文件时间长度(以分钟为单位)