2014-09-13 7 views
3

У меня только что появилось существующее веб-приложение GWT. Это приложение работает очень стандартным образом: у него есть клиентская (браузерная) часть и часть сервера. Он использует GWT-RPC для связи с сервером, который реализует RemoteServiceServlet.Добавить клиент Android на существующий сервер GWT

Теперь я хочу реализовать клиент Android, который повторно использует серверную часть текущего приложения GWT. Клиент Android не должен иметь всю функциональность текущего клиента браузера. Я просто хочу повторно использовать существующий сервер без изменений, так что одна и та же реализация сервера может использоваться как браузером, так и клиентом Android. Я довольно новичок в GWT. Что бы вы сделали в этом случае? Вы просто отправляете HTTP-запросы на сервер сервлетов из приложения Android, или есть лучший способ сделать это?

Спасибо!

ответ

0

Я хотел бы предложить не использовать механизм GWT-RPC для обмена данными между сервером и ничего не GWT. Причина в том, что GWT-RPC защищает детали сообщения. Внутренние элементы могут изменяться с использованием используемой вами версии GWT.

То, что вы должны использовать, зависит от архитектуры серверного приложения и вашего клиента.

Что вы можете попробовать - это обертывание сервлетов GWT другими сервлетами, которые выдают данные в общем формате (например, XML или JSON). Таким образом, вы не зависимы от внутренних компонентов GWT-RPC, и вам не нужно изменять существующий код (сервлеты-оболочки могут быть помещены в другой проект только с ссылкой на существующий проект сервера GWT-RPC).

Вот пример:

GWT-RPC сервлетов:

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; 
     } 
    } 
} 

Теперь вы можете обернуть этот сервлет вернуть 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 
    } 
} 
+0

Если бы я получил это право, то я могут просто написать некоторые сервлеты GWT, которые предлагают общий доступ к моим данным на сервере, и просто заверните сервлеты, которые мне нужны, в «Фасад», который предлагает функциональность, которая мне нужна для моих клиентов Android ** плюс ** дополнительные функции ty, это правильно? Это звучит интересно, потому что на данный момент я предлагаю второй REST API для мобильных клиентов вместо повторного использования функций сервлетов GWT. – displayname

+0

Я написал пример выше. И да, вы также можете добавить дополнительные функциональные возможности в сервлете обертки. – Bob

+0

Хорошо! Это хорошо знать! Спасибо :) – displayname

Смежные вопросы