我刚刚获得了一个现有的 GWT Web 应用程序。这个应用程序以非常标准的方式工作:它有一个客户端(浏览器)部分和一个服务器部分。它使用 GWT-RPC 与实现 RemoteServiceServlet 的服务器通信。
现在,我想做的是实现一个重用当前 GWT 应用程序的服务器部分的 Android 客户端。 Android 客户端不需要拥有当前浏览器客户端的全部功能。我只是想在不修改的情况下重用现有的服务器,以便浏览器和 Android 客户端都可以使用相同的服务器实现。我对 GWT 很陌生。在这种情况下你会怎么做?您是直接从 Android 应用程序向 servlet 服务器发送 HTTP 请求,还是有更好的方法来执行此操作?
谢谢!
最佳答案
我建议不要使用GWT-RPC 机制在服务器和任何非GWT 之间进行通信。原因是,GWT-RPC 屏蔽了通信的细节。它的内部结构可能会随着您使用的 GWT 版本而改变。
您应该使用什么取决于服务器应用程序和您的客户端的架构。
您可以尝试将 GWT servlet 与其他 servlet 包装在一起,以通用格式(例如 XML 或 JSON)提供数据。这样,您就独立于 GWT-RPC 内部结构,并且不必修改现有代码(包装器 servlet 可以放在另一个项目中,只引用现有的 GWT-RPC 服务器项目)。
这是一个例子:
GWT-RPC Servlet:
public class MyGwtServiceImpl extends RemoteServiceServlet implements MyGwtService {
// Method delivering my task list to GWT client
@Override
public List<Task> getTaskList(final String clientId) {
// Get task list ...
return result;
}
}
}
现在您可以包装该 servlet 以返回 JSON 或 XML:
public class MyJsonServlet extends MyGwtServiceImpl {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) {
List<Task> result = super.getTaskList(req.getParameter("clientId"));
// Serialize result to JSON and write to OutputStream
}
}
关于java - 将 Android 客户端添加到现有 GWT 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25823550/