2015-07-01 3 views
1

Я новичок в разработке Ejb, так что это может быть вопрос новичков. Я разрабатываю приложение с общим шаблоном фасада службы; таким образом, мой локальный и удаленный интерфейс не может знать параметры моего сеансового компонента, поэтому я могу передавать только простые данные между уровнем фасада и представления. Какое из лучших решений позволило передать одно и то же содержимое моего компонента между фасадным и презентационным слоями? Должен ли я дублировать каким-то образом мой bean-компонент, чтобы сделать его видимым вне уровня представления?EJB - Как передать сложный объект в уровень представления?

Благодаря

ответ

1

Ваш SessionBean не должен быть передан между служебным слоем и слоем представления. Обычно ваш уровень представления должен иметь ссылку на ваш удаленный или локальный служебный интерфейс (ы), который инициализируется с использованием инфраструктуры CDI @EJB.

За сценой:

ИПР рамки затем впрыснуть экземпляр вашей реализации интерфейса сервиса. Если вы используете удаленную службу, она использует технологию RMI для получения этого экземпляра и передачи заглушки с использованием протокола JRMP.

Я думаю, что вы не хотите передавать эти SessionBeans между этими слоями. Вам необходимо передать сложные DTO (объекты передачи данных) в качестве аргумента в методы SessionBean. Правильно ли я понимаю?

Если так что вы можете создать несколько POJO (простых объектов Java, который содержит некоторые свойства или поля и некоторые установщики методы геттер +, по крайней мере по умолчанию без аргументов constructor), который реализует интерфейс java.io.Serializable.

В этом случае вы можете использовать эти java-объекты в качестве аргументов метода SessionBean.

Надеется, что это было бы полезно,

Good Luck.

+0

Спасибо за ответ @staefi Моя единственная проблема заключается в том, что я имею различные проекты: А) представления B) интерфейсы C) боб и фасад - A) имеют dipendence на B), C) имеют dipendence на B) Итак, где я могу поставить свои DTO? – dBocca

+0

@dbocca: некоторые из ваших DTO могут быть просто некоторыми POJO, которые эквивалентны вашим классам Entity (EntityBeans). В этом случае лучше разместить их на уровне доступа к данным проекта (возможно, c)). В других случаях они могут находиться в вашем проекте интерфейсов B), поскольку они используются в аргументах методов в этих интерфейсах. Я не думаю, что они вам нужны на уровне доступа к данным. – STaefi

+0

Я думаю, что я поставлю DTO в проекте B). Большое спасибо! :) – dBocca