Я хотел бы продолжить этот вопрос gwt-serialization-policy-hosted-mode-out-of-sync . Короче говоря, когда я выполняю RPC из размещенного браузера, этот вызов не выполняется на сервере, за исключением.
INFO: GwtRpcEventSrvc: ERROR: The serialization policy file '/84EC7BA65AF8175BAA99B47877FDE163.gwt.rpc' was not found; did you forget to include it in this deployment?
SEVERE: GwtRpcEventSrvc: WARNING: Failed to get the SerializationPolicy '84EC7BA65AF8175BAA99B47877FDE163' for module 'http://host:19980/MYAPP/'; a legacy, 1.3.3 compatible, serialization policy will be used. Youmay experience SerializationExceptions as a result.
SEVERE: Exception while dispatching incoming RPC call
Когда я выполняю тот же RPC из браузера, то запрос успешно выполняется на сервере.
Кроме того, я наблюдал странное поведение компилятора GWT, которое могло привести к проблеме с режимом размещенного браузера.
Я предполагаю, что когда я делаю две последующие компиляции одного и того же кода, результат отдельных компиляций должен быть одинаковым. Я имею в виду, что по крайней мере файлы xxxxx.html и yyyyy.gwt.rpc должны быть одинаковыми. (Где xxxxx и yyyyy - длинные числа, такие как 84EC7BA65AF8175BAA99B47877FDE163.)
В настоящее время у меня есть две версии моего проекта.
- Старый проект, скомпилированный GWT 1.7, который не страдает от проблемы с размещенным браузером, описанной в gwt-serialization-policy-hosted-mode-out-of-sync
- Новый проект, скомпилированный GWT 2.0.4. Этот новый проект основан на старом проекте. Этот проект страдает от проблемы размещенного браузера.
Случай 1: Старый проект с GWT 1.7
Я взял свой старый проект, который был скомпилирован GWT 1.7. Я сделал две компиляции и сравнил артефакты компиляции. Файлы gwt.rpc были одинаковыми , в то время как html-файлы имели различное содержимое и имя . Поскольку файлы gwt.rpc были всегда одинаковыми, у меня не было проблем с размещенным браузером.
Случай 2: Новый проект с GWT 2.0.4
Я скомпилировал его дважды, и оба gwt.rpc и html-файлы отличались . Поэтому вызов RPC в размещенном браузере не выполнен на сервере из-за отсутствия файла gwt.rpc.
Случай 3: Старый проект с GWT 2.0.4
Я скомпилировал его дважды, и оба файла gwt.rpc и html отличались . Поэтому вызов RPC в размещенном браузере не выполнен на сервере из-за отсутствия файла gwt.rpc.
Я провел некоторое исследование и обнаружил, что , когда я закомментирую элемент данных в классе Data, который передается с сервера на клиент, затем скомпилированные файлы начинают становиться одинаковыми.
class Data implements IsSerializable {
List<IsSerializable> data;
...
}
- Я хотел сделать то же самое в новом проекте, но, похоже, нужно изменить много классов. Таким образом, проблема растет с ростом проекта.
Я не знаю, что использовать вместо
List<IsSerializable> data;
для передачи данных.