Прямой вызов службы GWT RPC из Java

#java #gwt #gwt-rpc

#java #gwt #gwt-rpc

Вопрос:

Существует ли простой способ вызвать конечную точку службы GWT RPC непосредственно из кода Java? Я имею в виду реальный Java-код, а не Java-код, скомпилированный в javascript.

Я спрашиваю, потому что мы хотим выполнить тесты производительности / стресс-тесты для интерфейса GWT RPC. Я хотел бы написать тестовый жгут на Java и запустить его в JVM (в отличие от javascript, запущенного в браузере).

Я полагаю, что должен быть способ сделать это, потому что я предполагаю, что режим размещения GWT требует такой функциональности. Однако я не могу найти ни одного кода во время выполнения GWT, который демонстрировал бы, как это сделать чисто. Я просмотрел пакет com.google.gwt.user.client.rpc, но там, похоже, используется JSNI, который, очевидно, не был бы использован чистой Java.

Ответ №1:

GWT SyncProxy позволяет получить доступ к службам GWT RPC (например, методам) из чистого Java-кода (не JSNI). Таким образом, вы можете использовать ее для тестирования вашего интерфейса RPC.

Смотрите http://www.gdevelop.com/w/blog/2010/01/10/testing-gwt-rpc-services / для получения подробной информации.

Комментарии:

1. Будет ли этот механизм работать в производственной системе? Например, могу ли я использовать ее для предоставления Java API на стороне клиента моим клиентам?

2. Да, конечно. Однако для стороннего доступа вам необходимо реализовать управление доступом на стороне сервера

3. Поскольку приведенный выше URL-адрес кажется недействительным, пожалуйста, посетите сайт проекта Google Code: code.google.com/p/gwt-syncproxy

Ответ №2:

Вы пытаетесь сравнить бизнес-логику службы или насколько хорошо работает сам GWT-RPC? Если вас больше всего беспокоит, насколько хорошо работает ваш серверный код, вы могли бы просто создать экземпляр класса, который напрямую реализует вашу службу:

 MyServiceImpl impl = new MyServiceImpl();
impl.doSomething();
  

Если вы хотите протестировать больший фрагмент стека, включая вызовы RPC, взгляните сюда. Существует раздел под названием «запуск вашего теста в веб-режиме», в котором есть следующая строка: «По умолчанию тесты, выполняемые в размещенном режиме, выполняются как обычный байт-код Java в JVM». Итак, если вы используете описанную настройку, я думаю, что по умолчанию ваши тесты будут выполняться на Java. Также на этой странице есть информация о встроенных в GWT инструментах профилирования.

Комментарии:

1. Я хочу протестировать сам GWT-RPC и настроенный механизм отправки, который мы встроили в наш сервер. Я бы предпочел не использовать все строительные леса, налагаемые инфраструктурой тестирования GWT, но я рассмотрю встроенные инструменты тестирования GWT, на которые вы ссылаетесь. Спасибо!

Ответ №3:

Вы могли бы использовать обычный инструмент нагрузочного тестирования, такой как Grinder, для воспроизведения запросов post к вашей службе. Это не совсем то, о чем вы просите, но это может быть лучшим способом выполнить нагрузочное тестирование вашего приложения. Grinder может имитировать множество одновременных пользователей и так далее.