2

我可以将 EJB 模块用作 RESTful Web 服务吗?

以前有关于该主题的问题,例如下面的问题,但它们是从一年到三年前。“为什么我不能在 ejb 模块中创建 RESTful Web 服务?”

从那以后有没有任何升级。

4

2 回答 2

0

好吧,现在有可能(利用 CDI)。

请参阅此处的 JavaEE 教程。

于 2013-06-10T14:54:06.303 回答
0

是的,这是可以做到的。Restful Web 服务最初是在 HTTP 的上下文中描述的,但我想它不仅限于该协议。不过,对如何使用主要 HTTP 操作有良好的基础知识会很好。

因此,您将需要提供服务的 bean 方法来遵循基本规则。

在实现 EJB 模块的上下文中要注意的关键事项是:

资源

(1) 资源是任何具有身份的东西。

(2) 每个资源都有一个 URI。

(3) URI 是“不透明的”,不公开其实现的细节。

资源是可以用作您服务的“货币”的任何东西。如果客户端从特定方法返回代表狗的特定表示形式的对象,他们应该能够使用该对象与可能需要代表狗的其他方法对话。如果要在多个地方使用代表狗的那个对象,那么它有一个标识符和一个获取它的方法。方法名 + 标识符 = URI(唯一资源标识符)。

协议

(4)GET 操作是“幂等的”,没有副作用。

(5) 任何没有副作用的请求都应该使用GET。

(6) 所有交互都是无状态的。

您可能希望以 getDog(Long dogID) 的形式实现 bean 方法。哪个是您的 dogID 标识符的狗的 URI。所有带有 getXXXX() 的方法都不会对服务的其余部分产生副作用。如果只在服务上执行 getXXX(),后端不会改变一点。

所有交互都是无状态的。所以只使用无状态 bean。

陈述

(7) 记录数据和元数据格式。

(8) 数据有多种形式。

(9) 陈述包括指向其他​​资源的链接。

因此,如果您的客户用作“货币”的狗对象上引用了所有者(最好此引用应采用标识符的形式,即 ownerID),则该标识符可用于使用 getOwner( ownerID),它的 URI。

风格

(10) 记录和宣传您的服务 API。

(11) 使用现有的标准和技术。

(12) 完善和扩展架构、标准和工具

确保您的方法名称是自描述的并且自始至终是通用的。即updateDog(Dog dog)、create(Dog dog)、deleteDog(Long dogID)。因此,如果客户端想要创建一个所有者,他们将通过资源“所有者”的名称和在前面的示例中通过 Dog 表示中的引用获得的标识符立即知道方法名称是什么。

对不起,答案很长。

于 2013-06-10T20:51:22.650 回答