我可以将EJB模块用作RESTful Web服务吗?
之前有关于该主题的问题,如下面的问题,但它们是从一年到3年前。 “为什么我不能在ejb模块中创建RESTful Web服务?”
此后是否有任何升级。
答案 0 :(得分:0)
嗯,现在可以(利用CDI)。
请参阅JavaEE教程here。
答案 1 :(得分:0)
是的,这可以做到。最初在HTTP环境中描述了宁静的Web服务,但我想它并不仅限于该协议。关于如何使用主要HTTP操作的良好基础知识将是很好的。
所以你需要提供服务的bean方法来遵循基本规则。
在实现EJB模块的上下文中需要注意的关键事项是:
资源
(1)资源是具有身份的任何东西。
(2)每个资源都有一个URI。
(3)URI是“不透明的”,没有公开其实现的细节。
资源是可以用作服务“货币”的任何资源。如果客户端返回表示特定方法中的狗的特定表示中的对象,则他们应该能够使用该对象与可能需要代表狗的某些方法的其他方法交谈。如果要在多个地方使用表示狗的对象,则它具有标识符和获取它的方法。方法名称+标识符= URI(唯一资源标识符)。
协议
(4)GET操作是“幂等的”,没有副作用。
(5)任何没有副作用的请求都应该使用GET。
(6)所有互动都是无国籍的。
您可能希望以getDog(Long dogID)的形式实现bean方法。哪个是dogID标识符的狗的URI。使用getXXXX()的所有方法都不会对服务的其余部分产生任何副作用。如果在服务上只执行了getXXX(),则后端不会改变一位。
所有互动都是无国籍的。所以除了无状态豆之外别无其他。
交涉
(7)记录数据和元数据格式。
(8)数据有多种口味。
(9)陈述包括其他资源的链接。
因此,如果您的客户使用的狗对象作为“货币”,则其上引用了所有者(最好此引用应采用标识符即ownerID的形式),该标识符可用于获取完整的所有者表示使用getOwner(ownerID),它的URI。
样式
(10)记录并宣传您的服务API。
(11)使用可用的标准和技术。
(12)优化和扩展架构,标准和工具
确保您的方法名称是自我描述的并且贯穿始终。即updateDog(狗狗),创建(狗狗),deleteDog(长狗ID)。因此,如果客户想要创建一个所有者,他们将立即通过资源“所有者”的名称以及前面示例中通过Dog表示中的引用获得的标识符来知道方法名称是什么。
很抱歉答案很长。