Отправка сохраненных экземпляров JDO через GWT-RPC

  1. Ваш пол (плоскость или квадрат) должен быть статичным.
  2. Добавить компонент NavmeshAgent вашего игрока или вашего врага.

Вы можете установить статический флажок контрольная панель

21
задан CodeAndCats 28 June 2009 в 23:13
поделиться

4 ответа

Ваша оценка верна. Я полагаю, что JDO заменяет экземпляры коллекций своими собственными реализациями, чтобы отслеживать изменения графа объектов. Эти реализации не известны компилятору GWT, поэтому он не сможет их сериализовать. Это часто случается с классами, которые состоят из типов, совместимых с GWT, но с аннотациями JDO, особенно если некоторые свойства объекта являются коллекциями.

Для подробного объяснения и обходного пути ознакомьтесь с этим довольно влиятельным эссе по теме: http://timepedia.blogspot.com/2009/04/google-appengine-and-gwt-now-marriage.html

2
ответ дан 29 November 2019 в 22:12
поделиться

Вам вообще не нужно создавать отдельные экземпляры, на самом деле лучше не делать этого. В любом случае ваши объекты JDO должны быть простыми объектами POJO и никогда не должны содержать бизнес-логику. Это для вашего бизнес-уровня, а не для самих постоянных объектов.

Все, что вам нужно сделать, это включить источник аннотаций, которые вы используете, и GWT должен правильно скомпилировать ваш класс. Кроме того, вы хотите избежать использования библиотек, которые GWT не может компилировать (например, вещей, использующих отражение и т. Д.), Но во всех проектах, которые я делал, это никогда не было проблемой.

0
ответ дан 29 November 2019 в 22:12
поделиться

Краткий ответ: вам не нужно создавать повторяющиеся классы .

Я рекомендую вам взглянуть на следующие обсуждения групп Google на gwt -список авторов:

http://groups.google.com/group/google-web-toolkit-contributors/browse_thread/thread/3c768d8d33bfb1dc/5a38aa812c0ac52b

Вот интересный отрывок:

Если это все ты заинтересован, я описал способ сделать GAE и GWT-RPC работают вместе "из box ". Просто объявите свои объекты как: @PersistenceCapable (identityType = IdentityType.APPLICATION, съемный = "false") открытый класс MyPojo реализует Serializable {}

, и все будет работать, но вы приходится иметь дело с вручную повторное прикрепление при отправке объектов от клиента обратно на сервер.

Вы можете использовать эту опцию, и вам не понадобится зеркальный (DTO) класс. Вы также можете попробовать gilead (бывший hibernate4gwt), который позаботится о некоторых деталях в рамках проблем сериализации расширенных объектов.

4
ответ дан 29 November 2019 в 22:12
поделиться

Вам не нужно создавать два версии модели предметной области.

Вот два совета:

Используйте строковый ключ, а не класс Appengine Key.

pojo = pm.detachCopy(pojo)

... удалит все улучшения JDO.

1
ответ дан 29 November 2019 в 22:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: