Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Android客户端添加到现有GWT服务器_Java_Android_Gwt - Fatal编程技术网

Java 将Android客户端添加到现有GWT服务器

Java 将Android客户端添加到现有GWT服务器,java,android,gwt,Java,Android,Gwt,我刚刚得到一个现有的GWT web应用程序。此应用程序以非常标准的方式工作:它有一个客户端(浏览器)部分和一个服务器部分。它使用GWT-RPC与实现RemoteServiceServlet的服务器进行通信 现在,我想做的是实现一个Android客户端,它重用当前GWT应用程序的服务器部分。Android客户端不需要拥有当前浏览器客户端的全部功能。我只想在不做修改的情况下重用现有服务器,以便浏览器和Android客户端都可以使用相同的服务器实现。我是GWT的新手。在这种情况下你会怎么做?您是从An

我刚刚得到一个现有的GWT web应用程序。此应用程序以非常标准的方式工作:它有一个客户端(浏览器)部分和一个服务器部分。它使用GWT-RPC与实现RemoteServiceServlet的服务器进行通信

现在,我想做的是实现一个Android客户端,它重用当前GWT应用程序的服务器部分。Android客户端不需要拥有当前浏览器客户端的全部功能。我只想在不做修改的情况下重用现有服务器,以便浏览器和Android客户端都可以使用相同的服务器实现。我是GWT的新手。在这种情况下你会怎么做?您是从Android应用程序向servlet服务器发送HTTP请求,还是有更好的方法


谢谢大家!

我建议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中添加其他功能。