Пример использования GWT RPC. Часть 2
 

Пример использования GWT RPC. Часть 2

3 сентября 2014 8:00 Категории: Перевод

Продолжаем серию переводов про мощный java фреймворк Google Web Toolkit.Часть 2

Эта статья является продолжением переводов оригинальной документации по Google Web Toolkit. И как я уже писал ранее в статье GWT для начинающих, подготовка к работе все предложения наклонным шрифтом являются моим отступлением от оригинала.

Оригинал статьи можно найти тут.

Эта статья является продолжением  статьи Пример использования GWT RPC. Часть 1

Создание службы

Это того, чтобы определить свой интерфейс RPC, нужно:

  1. Определить интерфейс для вашего сервиса, который наследуется от RemoteService и где все ваши методы RPC.
  2. Определите класс для реализации серверного кода, который расширяет RemoteServiceServlet и реализует интерфейс, созданный выше.
  3. Определить асинхронный интерфейс к службе вызываемой из клиентского кода.

Синхронный интерфейс

Чтобы приступить к разработке нового интерфейса сервиса, создайте на стороне клиента интерфейс Java, который расширяет RemoteService интерфейс.

Это синхронный интерфейс является окончательным вариантом спецификации вашего сервиса. Любая реализация данного сервиса на стороне сервера должен расширить RemoteServiceServlet и реализовывать этот интерфейс.

Совет: Советуем создать асинхронный интерфейс для всех ваших служб, как показано ниже.

Асинхронные интерфейсы

Прежде чем вы действительно пытаетесь сделать удаленный вызов от клиента, необходимо создать еще один клиентский интерфейс, асинхронный, основанный на оригинальном интерфейсе службы. Продолжая пример выше, создать новый интерфейс в клиентском подпакете:

Как правильно именовать

Обратите внимание на использование суффикса Async  и аргумента, ссылающегося на AsyncCallback класс в приведенных выше примерах. Отношения между интерфейсом службы и его асинхронным коллегой должны следовать определенным стандартам именования. Компилятор GWT зависит от этих стандартов именования, так как это помогает создавать эффективный код для реализации RPC.

Интерфейс сервиса должен иметь соответствующий асинхронный интерфейс с тем же пакетом, и имя с суффиксом асинхронного приложения. Например, если служебный интерфейс называется com.example.cal.client.SpellingService , то асинхронный интерфейс должен быть вызван com.example.cal.client.SpellingServiceAsync .
Каждый метод в синхронном интерфейсе службы должен иметь метод в асинхронном интерфейсе службы с дополнительным AsyncCallback  параметром в качестве последнего аргумента.
Смотрите AsyncCallback для получения дополнительной информации о том, как реализовать асинхронный обратный вызов.