Java 将Android客户端添加到现有GWT服务器
我刚刚得到一个现有的GWT web应用程序。此应用程序以非常标准的方式工作:它有一个客户端(浏览器)部分和一个服务器部分。它使用GWT-RPC与实现RemoteServiceServlet的服务器进行通信 现在,我想做的是实现一个Android客户端,它重用当前GWT应用程序的服务器部分。Android客户端不需要拥有当前浏览器客户端的全部功能。我只想在不做修改的情况下重用现有服务器,以便浏览器和Android客户端都可以使用相同的服务器实现。我是GWT的新手。在这种情况下你会怎么做?您是从Android应用程序向servlet服务器发送HTTP请求,还是有更好的方法Java 将Android客户端添加到现有GWT服务器,java,android,gwt,Java,Android,Gwt,我刚刚得到一个现有的GWT web应用程序。此应用程序以非常标准的方式工作:它有一个客户端(浏览器)部分和一个服务器部分。它使用GWT-RPC与实现RemoteServiceServlet的服务器进行通信 现在,我想做的是实现一个Android客户端,它重用当前GWT应用程序的服务器部分。Android客户端不需要拥有当前浏览器客户端的全部功能。我只想在不做修改的情况下重用现有服务器,以便浏览器和Android客户端都可以使用相同的服务器实现。我是GWT的新手。在这种情况下你会怎么做?您是从An
谢谢大家! 我建议not使用GWT-RPC机制在服务器和任何非GWT的对象之间进行通信。原因是,GWT-RPC屏蔽了通信的细节。它的内部结构可能会随着您使用的GWT版本而改变 您应该使用什么取决于服务器应用程序和客户端的体系结构 您可以尝试将GWT servlet与以通用格式(例如XML或JSON)提供数据的其他servlet包装在一起。这样,您就独立于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;
}
}
}
公共类MyGwtServiceImpl扩展RemoteServiceServlet实现MyGwtService{
//方法将我的任务列表传递给GWT客户端
@凌驾
公共列表getTaskList(最终字符串clientId){
//获取任务列表。。。
返回结果;
}
}
}
现在您可以包装该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
}
}
公共类MyJsonServlet扩展了mygwtservicepimpl{
@凌驾
公共无效数据集(HttpServletRequest请求、HttpServletResponse响应){
列表结果=super.getTaskList(req.getParameter(“clientId”);
//将结果序列化为JSON并写入OutputStream
}
}
如果我做对了,那么我可以编写一些GWT servlet,在一般情况下提供对服务器上数据的访问,并将我需要的servlet封装到一个Facade
中,它提供了我的android客户端所需的功能和附加功能,对吗?这听起来很有趣,因为目前我为移动客户端提供了第二个RESTAPI,而不是重用GWT servlet的功能。是的,您还可以在包装servlet中添加其他功能。