GWT EJB перенос объектов - PullRequest
       22

GWT EJB перенос объектов

1 голос
/ 02 декабря 2011

У меня вопрос из-за архитектуры моего проекта.

С одной стороны находится пакет GWT со стороны клиента, а также сервлет для связи с проектом EJB. С другой стороны, есть проект EJB с сессионными компонентами и объектами, которые должны храниться в базе данных и отправляться между клиентом GWT и базой данных. Как я могу это понять?

Как я могу отправить объект из моего сессионного компонента в сервлет GWT, потому что сервлет GWT не знает о классах сущностей.

Ответы [ 2 ]

2 голосов
/ 02 декабря 2011

Ваша BeanServiceImpl может знать о ваших сущностях EJB. Это только сторона клиента 1005 * проекта GWT, которая не может. Таким образом, где-то в вашем пакете server у вас будет переводчик / маршаллер / конвертер для переключения с вашего объекта EJB Company на CompanyDTO для клиентской стороны. На самом деле он может иметь все те же поля, но, разумеется, не аннотацию @Entity. Вот так:

private CompanyDTO convert(Company ejb) {
  CompanyDTO dto = new CompanyDTO(ejb.getName());
  dto.setAddress(ejb.getAddress());
  return dto;
}

Тогда ваш код GWT на стороне клиента может работать с этими DTO, переводя обратно в сущности на стороне сервера, когда вам нужно выполнить транзакцию.

0 голосов
/ 03 декабря 2011

Я попробовал это, и мне удалось отправить объект из клиента в EJB-хранилище и сохранить его в базе данных MYSQL: http://www.vogella.de/articles/GWT/ar01s08.html

Но когда я пытаюсь отправить его обратно клиенту, я всегдаполучить исключение: com.google.gwt.user.client.rpc.SerializationException: тип 'org.eclipse.persistence.indirection.IndirectList' не был включен в набор типов, которые могут быть сериализованы этим SerializationPolicy, или его объект Class можетне быть загруженным.В целях безопасности этот тип не будет сериализован .: instance = {IndirectList: не был создан экземпляр}

Поэтому я думаю, что вы должны использовать DTO .. ​​

...