将 Android 客户端添加到现有 GWT 服务器
Posted
技术标签:
【中文标题】将 Android 客户端添加到现有 GWT 服务器【英文标题】:Add Android client to existing GWT server 【发布时间】:2014-09-13 13:09:34 【问题描述】:我刚刚获得了一个现有的 GWT Web 应用程序。这个应用程序以非常标准的方式工作:它有一个客户端(浏览器)部分和一个服务器部分。它使用 GWT-RPC 与实现 RemoteServiceServlet 的服务器进行通信。
现在,我想做的是实现一个 android 客户端,它重用当前 GWT 应用程序的服务器部分。 Android 客户端不需要具备当前浏览器客户端的全部功能。我只想在不修改的情况下重用现有的服务器,以便浏览器和Android客户端都可以使用相同的服务器实现。我对 GWT 很陌生。在这种情况下你会怎么做?您会直接从 Android 应用程序向 servlet 服务器发送 HTTP 请求,还是有更好的方法?
谢谢!
【问题讨论】:
【参考方案1】:我建议不要使用 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
【讨论】:
如果我做对了,那么我可以编写一些 GWT Servlet 来提供对服务器上我的数据的一般访问权限,然后将我需要的 servlet 包装到提供功能的Facade
中我的 android 客户端需要 plus 附加功能,对吗?这听起来很有趣,因为目前我为移动客户端提供了第二个 REST API,而不是重用 GWT servlet 的功能。
我在上面写了一个例子。是的,您还可以在包装 servlet 中添加其他功能。以上是关于将 Android 客户端添加到现有 GWT 服务器的主要内容,如果未能解决你的问题,请参考以下文章
如何将 URL 参数从 GWT 客户端发送到服务器端进行验证
LibGDX - 将跨平台客户端连接到服务器(HTML5/GWT、iOS、Android 和桌面)