Рисую HTML-сайтик на JEE5 (EJB3 + Hibernate). Времени разбираться со всякими там JSF нету, поэтому генерацию страниц делаю пока что по старинке: компактный XML-ответ (данные) плюс XSLT (дизайн). Возник вопрос: в каком слое генерировать этот самый XML-ответ? Имеются варианты:
1. В сервлете, используя полученные из BL Entity Beans. Кривовато: нужны дополнительные движения, чтобы избежать lazy load exceptions.
2. В сервлете, используя полученные из BL DTO. Ещё хуже (полночи читал флеймы про DTO ).
3. Внутри BL. Склоняюсь к этому варианту, хотя он тоже как-то не очень хорошо попахивает:
(а) бизнес-логика, возвращающая XML-ответы.
(б) сервлеты (сабжевый web tier) вырождаются в пустышки (парсинг параметров, плюс применение XSLT либо добавление <?xml-stylesheet> в ответ перед отдачей).
Есть ли у уважаемого All какие-либо замечания по теме?
Здравствуйте, UrryMcA, Вы писали:
>>>2. В сервлете, используя полученные из BL DTO. Ещё хуже (полночи читал флеймы про DTO ). UMA>И чем хуже?
Начинается... В моём случае — тем же самым. В точности те же движения для избежания lazy load exceptions, плюс расплодить сущности без необходимости (у меня всё взаимодействие между ejb & web локальное, так что никакой сериализацией там не пахнет). В общем, я видимо сделаю что-то вроде следующего:
class StatelessControllerBean {
private ... doSomethingImp(...);
public void doSomethingForWeb(Request request, XMLResponse response);
}
Здравствуйте, Дм.Григорьев, Вы писали:
ДГ>XSLT на стороне браузера. UMA>>и генерацию view?
Сорри — сглючил. Значит хардкодится т.ко получение данных из бина.
ИМХО допустимо если:
1. допустимо отправить клиенту "лишние" данные
2. структура данных и представление редко меняется
3. представление не зависит от свойств клиента (админ/пользователь/покупатель etc)
Здравствуйте, UrryMcA, Вы писали:
UMA>Значит хардкодится т.ко получение данных из бина.
UMA>ИМХО допустимо если: UMA>1. допустимо отправить клиенту "лишние" данные UMA>2. структура данных и представление редко меняется UMA>3. представление не зависит от свойств клиента (админ/пользователь/покупатель etc)
Угумс. Почти, кроме третьего пункта. Только мне как-то всегда казалось, что само (без кодирования) ничто не появляется в любом случае.
Кстати, сериализация Entities в XML у меня параметризуема — BasicEntity.toXML(XMLResponseElement target, Object param), реализации этого метода выглядят никак не длиннее, чем заполнение DTO, так что в сущности мой XML-формат