如何将业务逻辑公开为移动应用程序使用的 RESTful Web 服务?

How to expose the business logic as a RESTful web service to be consumed by a mobile application?

我在移动应用程序的服务器端工作。我的要求之一是使用 Java EE、JPA、EJB 和 JSON 来实现服务器。

我是 Java EE 的新手,但我读了一些书,到目前为止,我设法通过实施项目的 Pojo 和 EJB 来构建业务逻辑。

我遇到困难的地方是弄清楚如何将我的 EJB 公开为 RESTful 应用程序客户端可以使用的 Web 服务。我可以找到一些文档和教程,但所有这些都与为网站而非移动设备构建后端有关。

将业务逻辑作为 RESTful Web 服务公开给 Java EE 环境中的移动应用程序的最佳做法是什么?

我不确定你的应用程序服务器是什么,但使用 JavaEE 6 和 7,你可以很容易地做到这一点。查看 this tutorial 以获得良好的起点。一般来说,一个简单的服务看起来像:

@Path("/login")
public class LoginService  {    

    @Consumes({MediaType.APPLICATION_JSON})
    @Produces({MediaType.APPLICATION_JSON})
    @POST
    public Response login(LoginRequest loginRequest) throws Exception {  
    // your code
    }

在这种情况下,LoginRequest 很简单 Java POJO 在 JavaScript 世界中具有等效项。

请注意,客户端是什么并不重要 - 服务器只需要 JSON 编码的对象,它可以是浏览器或本机移动应用程序。

一个问题是如何初始化 Rest 框架下的应用服务器。有的使用web.xml,有的使用特别注释的class。这是一个有点不同的问题 - 让我们知道您使用的是哪个应用程序服务器。

你可以看看这个样本https://github.com/AdamBien/airhacks/tree/master/javaee-sample

这 class 是您 bootstrap 其余应用程序所需的全部内容:https://github.com/AdamBien/airhacks/blob/master/javaee-sample/src/main/java/com/airhacks/JAXRSConfiguration.java

这一个使用无状态 EJB 公开了一个休息资源: https://github.com/AdamBien/airhacks/blob/master/javaee-sample/src/main/java/com/airhacks/messaging/boundary/MessagesResource.java