![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Maverick |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1307 Регистрация: 22.9.2003 Где: Odessa, Ukraine Репутация: 2 Всего: 10 |
Уважаемые, помогите советом...
Существуют два отдельных приложения JSF+EJB3... Для примера, БАНКИ и АДРЕСА... В одном существует сущность Банкир, в котором используется сущность Адрес... И так есть JSF- форма для редактирования данных по Банкиру, в котром есть поле с демонстрацией текущего Адреса банкира... поле снабжено кнопкой для редактирования Адреса, которое должно переводить нас на форму редактирования Адреса... Каким образом организовать взаимодействие? Необходимо: 1) Передавать в форму Адресов идентификатор текущего адреса.. 2) В случае отсутствия Адреса - передавать сигнал об этом и впоследствии предать форме Банкира идентификатор нового адреса... 3) Осуществлять слежение за маневрами пользователя для корректного возвращения в исходную страницу... Я пошел простым путем - формирую URL с параметрами http://бла-бла?parameter=1... но это меня пока не вполне устраивает... возникают вопросы: каким образом, можно установить с какой страницы я пришел на эту JSF-страницу? каким наиболее простым образом можно эти параметры вытащить из URL текущей страницы? каким образом можно указать правильный контекстный URL? поскольку абсолютные адреса слишком неудобны... И вообще правильно ли я поступаю...?? ![]() |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 8 Всего: 118 |
Я честно говоря не сталкивался с такой ситуацией - запоминать страницу, на которую надо вернуться.
Варинатов я виже несколько: 1. Можно сделать нечто вроде параметра BACK на странице, который будет представлять из себя просто URL. Каждый сервлет, который будет вызывать какую-то страницу фомирует также и такую ссылку. 2. Запоминать URL в сессии для пользователя и делать специальную команду BACK на нужной странице. При вызове команды извлекать необходимую информацию из сессии и отправляться туда, куда сказано ![]() Наверняка можно придумать что-то еще. |
|||
|
||||
ekr |
|
||||
![]() ...и это пройдет... ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 6.5.2007 Где: Moscow, RU Репутация: 12 Всего: 19 |
можно проанализировать http-заголовок http-referer
организация взаимодействия независимых приложений - всегда геморрой, т.к. они не разделяют общие серверные ресурсы (jsf backing beans, http sessions, etc). мораль - связать их можно или как ты делаешь, по клиентскому слою (параметры), или по общему серверному ресурсу (т.к. приложения разные, они ничего не разделяют, в т.ч. ServletContext), например, данным в БД. FYI: Для асинхронных веб-сервисов часто применяется хранение состояния клиента в БД. |
||||
|
|||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 16 Всего: 151 |
Этот метод не дает полной гарантии. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Maverick |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1307 Регистрация: 22.9.2003 Где: Odessa, Ukraine Репутация: 2 Всего: 10 |
Это я уже понял... ![]()
Дело в том, что Адрес есть не только у Банкира, но и у Банка, и у Клиента... Таким образом, нужно всегда знать - откуда пришел редактировать Адрес, чтобы вернуться назад, к нужной форме.... И все-таки, каким наиболее простым образом можно эти параметры вытащить из URL текущей страницы? Дело в том, что в сервлете вроде понятно как это сделать.. а в JSF-странице? Куда тыкаться? Как проанализировать - какой URL у страницы? Добавлено через 6 минут и 50 секунд
Пришла в голову шальная мысль - если создать EJB для связи.. подрубить его в оба проекта... и в нем хранить необходимые данные?? не слишком ли? |
||||
|
|||||
YuG |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 20.2.2006 Репутация: 3 Всего: 4 |
Мысли вслух:
всю дополнительную информацию (URL и проч.) сохранять в каком-нибудь Map'e. А сам Map хранить в application scope. Ну а в request'e передавать параметром key нашего Map'a. (понятно, что нужен дополнительный класс-manager для работы с этой табличкой - добавлять данные, очищать мусор и проч.) |
|||
|
||||
Maverick |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1307 Регистрация: 22.9.2003 Где: Odessa, Ukraine Репутация: 2 Всего: 10 |
||||
|
||||
YuG |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 20.2.2006 Репутация: 3 Всего: 4 |
Maverick, нет, под таблицей я имел ввиду Map )
И EJB в моем простейшем варианте не нужны. |
|||
|
||||
Maverick |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1307 Регистрация: 22.9.2003 Где: Odessa, Ukraine Репутация: 2 Всего: 10 |
При переходе из приложения в приложение - идентификатор сессии измениться? И вообще - как правильно работать в JSF с сессией... ну хотя бы получить ее идентификатор??
|
|||
|
||||
ekr |
|
||||
![]() ...и это пройдет... ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 6.5.2007 Где: Moscow, RU Репутация: 12 Всего: 19 |
насколько я понял из постановки задачи, приложения разворачиваются как или независимые war или ear. в этом случае они не разделяют servletcontext.
ejb для связи.... попробуй создать на базе одного ejb- или web-приложения фасад поверх всех твоих банкиров и пр. думается, это будет крайне неплохой путь. |
||||
|
|||||
Maverick |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1307 Регистрация: 22.9.2003 Где: Odessa, Ukraine Репутация: 2 Всего: 10 |
абсолютно верно... отдельные ear...
нельзя ли развить мысль - чуть-чуть... торможу чего-то... |
||||
|
|||||
ekr |
|
|||
![]() ...и это пройдет... ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 6.5.2007 Где: Moscow, RU Репутация: 12 Всего: 19 |
не волнуйся, и это пройдет )) смотри: вместо сцепки (не смейся, есть такой термин в теории языков программирования) двух приложений по внешним данным (вншн БД) или по параметрам (как ты вначале хотел) можно использовать design pattern фасад. что это значит: ты имеешь два независимых ejb-приложения (банкиры и чего-то там), и к ним у тебя два независимых клиента (web-apps). вместо двух этих независимых ты делаешь одно, которое будет взаимодействовать с обоими бинами. это и будет фасадом ) в нем у тебя уже таких проблем описанных тобой. не будет ) |
|||
|
||||
Maverick |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1307 Регистрация: 22.9.2003 Где: Odessa, Ukraine Репутация: 2 Всего: 10 |
неа... так не прокатит... дело в том, что адрес используется очень много где (около 20 приложений)... система общая из модульной превратиться в единую... будет одно гигантское приложение... тоже будет нерадостно....
![]() |
|||
|
||||
ekr |
|
||||
![]() ...и это пройдет... ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 6.5.2007 Где: Moscow, RU Репутация: 12 Всего: 19 |
отнюдь. ты деплоишь бин адреса как независимый jar-модуль и к нему останется доступ из остальных приложений. абсолютно независимых )
ок, смотрите сами ) фишка паттерна фасад как раз в том, что приложения так и остаются независимыми, а эта надстройка - фасад - только как точка входа для клиентов. там изнес-логику сложную вообще можно не внедрять, только интерфейсную, для людишек ))) |
||||
|
|||||
Maverick |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1307 Регистрация: 22.9.2003 Где: Odessa, Ukraine Репутация: 2 Всего: 10 |
да... все EJB будут отдельными jar... но web-приложение-то будет одно? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |