Файл сериализации RPC размещенного режима GWT с неверным определением класса вызывает исключение IncompatibleRemoteServiceException
У меня есть проект GWT в Eclipse, который бросает com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException
при использовании режима хоста, поскольку хэш-код RPC-файла сервера не совпадает с хэш-кодом RPC-файла сервера.
Я отследил это до пары классов, которые реализуют com.extjs.gxt.ui.client.data.BeanModelTag
, Эти классы, по-видимому, неправильно включены в RPC-файл, созданный сервером кода. Кроме того, имена классов выглядят искаженными.
Например, вместо com.acme.beans.MyBean
класс упоминается как com.acme.beans.BeanModel_com_acme_beans_MyBean
,
Я подозреваю, что это как-то связано с неправильным путем к классу для моей цели отладки, включая некоторые jar, src dir или другой проект, но я не очень хорошо понимаю, как отлаживать это дальше.
1 ответ
В GXT 2 (текущее значение 3, 4, скорее всего, скоро будет бета) была функция, позволяющая генерировать типы BaseModelData на основе Java-компонента или pojo, что позволяет использовать функции, подобные отражению, которые GXT 2 использовал для рендеринга шаблонов и ячеек сетки (GXT 3 компилирует -временные функции, которые решают, что доступ к свойству вместо этого). BeanModels не предназначены для отправки по проводам - вместо этого вы должны отправлять свой исходный MyBean по проводам.
Этот сгенерированный экземпляр BeanModel предназначен для упаковки оригинального MyBean и доступен только для клиентского кода. Чтобы снова вернуться на сервер, разверните компонент - используйте getBean()
чтобы получить основное ПОЖО.