используя механизм RPC GWT с моим настроенным сервлетом

StackOverflow https://stackoverflow.com/questions/1425525

Вопрос

В настоящее время у меня есть приложение GWT, которое использует RequestBuilde для отправлять сообщения сервлету (используя POST и GET ) и моему сервлету (в doPost и doGet ) " паузы " запрос (это делается с помощью Servlets 3.0 spec) и добавляет его в очередь.
Дополнительно у меня есть Поток демона, который работает в фоновом режиме и "воспроизводит" запрос когда есть новые данные.
Это прекрасно работает для меня, за исключением того, что я просто отправляю строки на данный момент, и я хотел бы использовать механизм RPC для отправки Объекты.
У меня такой вопрос:
Если я создаю свой класс myServiceImpl , который расширяется RemoteServiceServlet как мне обрабатывать doPost и doGet , если вообще?
Мне нужно приостановить мой запрос, чтобы использовать асинхронную поддержку, где это должно быть достигнуто? Хотя я, возможно, могу вызвать метод this.getThreadLocalRequest () в моем методе RPC в классе myServiceImpl , но я не уверен, насколько это будет разумно.
Я не уверен, что я даже понимаю, как GWT обрабатывает вызов со стороны клиента этого асинхронного интерфейса. Случайно ли это вызывает doGet для примера сервлета и гарантирует, что он вызывает требуемый метод RPC?
Извините, если я напутал, просто я не могу найти больше подробная техническая информация о том, как именно этот бизнес RPC работает.
Цени любую кредитную руку
Еффая

Это было полезно?

Решение 2

Я думаю, что основное недоразумение, которое у меня было в то время, было связано с тем, что GWT RPC основывается на механизме сервлета (внутренне), и поэтому попытка использовать этот механизм с асинхронными сервлетами была в то время невозможна, так как GWT RPC был построен на сервлетах 2.5 (опять же, в самый раз).

Другие советы

Чтобы понять RPC, забудьте о POST и GET, он работает по-разному (то есть с точки зрения программирования. Внутренне он использует его, но вы не видите или не должны его понимать, если не хотите делать что-то экзотическое). Хорошей отправной точкой для RPC является документация GWT: http://code.google .com / webtoolkit / учебники / 1,6 / RPC.html

Чтобы дать вам резюме. При использовании RPC ваш сервлет myServiceImpl должен реализовывать методы интерфейса с именем myService , помимо расширения RemoveServiceServlet . Методы получают в качестве аргументов данные, которые вы хотите отправить на сервер.

Рядом с интерфейсом myService необходимо создать интерфейс myServiceAsync (оба интерфейса должны быть в клиентском подпакете). Этот интерфейс myServiceAsync должен содержать те же методы, что и интерфейс myService , за исключением того, что каждый метод возвращает void и имеет дополнительный последний аргумент обратного вызова AsyncCallback / код>.

В вашем клиенте вам нужно использовать GWT для генерации RPC через GWT.create (подробности см. в документации.

Чтобы использовать RPC, вызовите методы в интерфейсе myServiceAsync в своем клиентском коде, и GWT позаботится об отправке его сервлету. Затем сервлет вызовет соответствующий метод с аргументами, которые вы передали клиенту. Это делается асинхронно. Таким образом, клиент возвращается прямо из звонка.

Когда сервер отправляет результат обратно, обратный вызов, который вы передали, myServiceAsync или используется OnError или OnSuccess . OnError , если метод на стороне сервера выдал ошибку, иначе OnSuccess . OnSuccess будет иметь в качестве аргумента возвращаемое значение из того, что вы вернули в методе, реализованном вашим сервлетом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top