Добавить SOAP в существующее решение GWT - PullRequest
0 голосов
/ 30 ноября 2011

Я ищу чистый способ добавить сервис-ориентированный доступ к существующему приложению GWT (клиент + сервер на основе RemoteService). Дело в том, что все службы уже на месте, что описано в нотации @RemoteServiceRelativePath. Было бы неплохо иметь возможность фактически добавлять нотацию @WebService и иметь доступ к ним как с помощью RPC, так и XML / JSON /..

Реальная проблема заключается в том, что расширение текущего приложения для поддержки других клиентов, помимо существующего GWT, является довольно сложным из-за обфускации GWT. Это также приводит к ненужной связи между клиентом и сервером, поскольку их необходимо развертывать одновременно из-за созданных файлов .gwt.rpc.

Я хотел бы повторно использовать существующие интерфейсы RemoteService для определения веб-служб и подключения к ним новых клиентов по текстовому протоколу. Кроме того, я хотел бы перенести существующий клиент GWT на тот же протокол.

Возможно ли это сделать, используя те же интерфейсы и реализацию только по аннотации? Каков наилучший способ портировать существующий клиент для использования простого текстового протокола RequestBuilder? Или просто внедрить новую реализацию сериализации, которая делает xml / json?

Я даже не знаю, с чего начать, поэтому и спрашиваю. Может быть, лучше переписать все службы и портировать все сразу, но это сломает все, пока это не будет закончено.

Ответы [ 2 ]

1 голос
/ 01 декабря 2011

У нас был другой подход, так как GWT связывает GWT между сервером и клиентом не так уж плохо, но дает вам хорошую интеграцию, и вам не нужно слишком много думать о проблемах связи и т. Д. Для этого нашиПриложение имеет интерфейс внешнего уровня, который состоит из полного стека gwt (соединение клиент + сервер), а на стороне сервера мы подключаемся через Spring и RPC к уровню обслуживания.

Таким образом, вы можете использовать напреимущества весны, и вы не теряете комфорт GWT.

Но я хотел бы услышать, если кто-то уже пошел другими путями;)

0 голосов
/ 02 августа 2016

Это довольно поздно, и GWT - не чудо, которое когда-то было.Однако, для того, чтобы связать свободные концы, вот решение, которое я выбрал:

  • создать генератор Java, который анализирует все файлы моделей (совместно используемые классы клиент / сервер) с помощью отражения и генерирует файл Java, который читает/ записывает объекты SOAP
  • , загружая вышеперечисленное в общий обработчик Java, который обрабатывает собственные объекты + массив, наборы, карты
  • записывает службу, которая может обрабатывать сгенерированный XML из файлов выше

Звучит немного кратко и немного сложно, но «всего» потребовалось ~ 1 месяц, чтобы написать код для автоматического преобразования> 200 объектов в их представление XML, автоматически.Дополнительным преимуществом является то, что он допускает макетирование и кроссплатформенные клиенты / серверы.

В качестве резюме, сгенерированный код создает новые методы 'fromXML' и 'toXML', которые заполняют поля, являющиеся открытыми членами (get /набор) в данном классе.Таким образом, с учетом MyClass он будет генерировать Java-классы MyClassSerializer и MyClassDeserializer, которые реализуют эти специфичные для SOAP методы, а также публикуют себя для «диспетчера».Поэтому всякий раз, когда этот диспетчер видит «MyClass», он будет знать, откуда взять функции ser / deser.

...