Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Взаимодействие двух JSF-приложений, как правильно организовать... 
:(
    Опции темы
Maverick
Дата 28.5.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Уважаемые, помогите советом...

Существуют два отдельных приложения JSF+EJB3... Для примера, БАНКИ и АДРЕСА... В одном существует сущность Банкир, в котором используется сущность Адрес... И так есть JSF- форма для редактирования данных по Банкиру, в котром есть поле с демонстрацией текущего Адреса банкира... поле снабжено кнопкой для редактирования Адреса, которое должно переводить нас на форму редактирования Адреса...

Каким образом организовать взаимодействие? Необходимо:
1) Передавать в форму Адресов идентификатор текущего адреса..
2) В случае отсутствия Адреса - передавать сигнал об этом и впоследствии предать форме Банкира идентификатор нового адреса... 
3) Осуществлять слежение за маневрами пользователя для корректного возвращения в исходную страницу... 

    Я пошел простым путем - формирую URL с параметрами http://бла-бла?parameter=1... но это меня пока не вполне устраивает... 

возникают вопросы:
каким образом, можно установить с какой страницы я пришел на эту JSF-страницу?  
каким наиболее простым образом можно эти параметры вытащить из URL текущей страницы?
каким образом можно указать правильный контекстный URL? поскольку абсолютные адреса слишком неудобны... 

И вообще правильно ли я поступаю...?? smile 


--------------------
smile
PM ICQ GTalk   Вверх
AntonSaburov
Дата 28.5.2007, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 8
Всего: 118



Я честно говоря не сталкивался с такой ситуацией - запоминать страницу, на которую надо вернуться.
Варинатов я виже несколько:
1. Можно сделать нечто вроде параметра BACK на странице, который будет представлять из себя просто URL. Каждый сервлет, который будет вызывать какую-то страницу фомирует также и такую ссылку.
2. Запоминать URL в сессии для пользователя и делать специальную команду BACK на нужной странице. При вызове команды извлекать необходимую информацию из сессии и отправляться туда, куда сказано smile

Наверняка можно придумать что-то еще.
PM MAIL WWW ICQ   Вверх
ekr
Дата 28.5.2007, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


...и это пройдет...
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 6.5.2007
Где: Moscow, RU

Репутация: 12
Всего: 19



Цитата

каким образом, можно установить с какой страницы я пришел на эту JSF-страницу?

можно проанализировать http-заголовок http-referer

Цитата

каким образом можно указать правильный контекстный URL? поскольку абсолютные адреса слишком неудобны...
И вообще правильно ли я поступаю...?? 

организация взаимодействия независимых приложений - всегда геморрой, т.к. они не разделяют общие серверные ресурсы (jsf backing beans, http sessions, etc).
мораль - связать их можно или как ты делаешь, по клиентскому слою (параметры), или по общему серверному ресурсу (т.к. приложения разные, они ничего не разделяют, в т.ч. ServletContext), например, данным в БД. 
FYI: Для асинхронных веб-сервисов часто применяется хранение состояния клиента в БД.


--------------------
и это пройдет....

http://ekrs.blogspot.com
PM WWW   Вверх
batigoal
Дата 28.5.2007, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Цитата(ekr @  28.5.2007,  18:31 Найти цитируемый пост)
можно проанализировать http-заголовок http-referer

Этот метод не дает полной гарантии.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Maverick
Дата 29.5.2007, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Цитата(ekr @  28.5.2007,  17:31 Найти цитируемый пост)
организация взаимодействия независимых приложений - всегда геморрой

Это я уже понял...  smile 


Цитата(AntonSaburov @  28.5.2007,  17:12 Найти цитируемый пост)
Я честно говоря не сталкивался с такой ситуацией - запоминать страницу, на которую надо вернуться.

Дело в том, что Адрес есть не только у Банкира, но и у Банка, и у Клиента... Таким образом, нужно всегда знать - откуда пришел редактировать Адрес, чтобы вернуться назад, к нужной форме.... 

И все-таки, каким наиболее простым образом можно эти параметры вытащить из URL текущей страницы?

Дело в том, что в сервлете вроде понятно как это сделать.. а в JSF-странице? Куда тыкаться? Как проанализировать - какой URL у страницы?

Добавлено через 6 минут и 50 секунд
Цитата(ekr @  28.5.2007,  17:31 Найти цитируемый пост)
по общему серверному ресурсу (т.к. приложения разные, они ничего не разделяют, в т.ч. ServletContext), например, данным в БД. 


Пришла в голову шальная мысль - если создать EJB для связи.. подрубить его в оба проекта... и в нем хранить необходимые данные?? не слишком ли?


--------------------
smile
PM ICQ GTalk   Вверх
YuG
Дата 29.5.2007, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 20.2.2006

Репутация: 3
Всего: 4



Мысли вслух:
всю дополнительную информацию (URL и проч.) сохранять в каком-нибудь Map'e.
А сам Map хранить в application scope.
Ну а в request'e передавать параметром key нашего Map'a.

(понятно, что нужен дополнительный класс-manager для работы с этой табличкой - добавлять данные, очищать мусор и проч.)
PM WWW ICQ Skype   Вверх
Maverick
Дата 29.5.2007, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Цитата(YuG @  29.5.2007,  09:34 Найти цитируемый пост)
понятно, что нужен дополнительный класс-manager для работы с этой табличкой - добавлять данные, очищать мусор и проч.


ну так этот класс-manager - это ведь EJB? Более легкого способа работы с таблицей я не знаю... 


--------------------
smile
PM ICQ GTalk   Вверх
YuG
Дата 29.5.2007, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 20.2.2006

Репутация: 3
Всего: 4



Maverick, нет, под таблицей я имел ввиду Map )
И EJB в моем простейшем варианте не нужны.
PM WWW ICQ Skype   Вверх
Maverick
Дата 29.5.2007, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



При переходе из приложения в приложение - идентификатор сессии измениться? И вообще - как правильно работать в JSF с сессией... ну хотя бы получить ее идентификатор??


--------------------
smile
PM ICQ GTalk   Вверх
ekr
Дата 29.5.2007, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


...и это пройдет...
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 6.5.2007
Где: Moscow, RU

Репутация: 12
Всего: 19



Цитата

А сам Map хранить в application scope

насколько я понял из постановки задачи, приложения разворачиваются как или независимые war или  ear.  в этом случае они не разделяют servletcontext.

Цитата

 если создать EJB для связи.. подрубить его в оба проекта... и в нем хранить необходимые данные?? не слишком ли?

ejb для связи.... попробуй создать на базе одного ejb- или web-приложения фасад поверх всех твоих банкиров и пр. думается, это будет крайне неплохой путь.



--------------------
и это пройдет....

http://ekrs.blogspot.com
PM WWW   Вверх
Maverick
Дата 29.5.2007, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Цитата(ekr @  29.5.2007,  16:09 Найти цитируемый пост)

насколько я понял из постановки задачи, приложения разворачиваются как или независимые war или  ear.  в этом случае они не разделяют servletcontext.


абсолютно верно... отдельные ear...
Цитата(ekr @  29.5.2007,  16:09 Найти цитируемый пост)
ejb для связи.... попробуй создать на базе одного ejb- или web-приложения фасад поверх всех твоих банкиров и пр. думается, это будет крайне неплохой путь.


нельзя ли развить мысль - чуть-чуть... торможу чего-то... 


--------------------
smile
PM ICQ GTalk   Вверх
ekr
Дата 29.5.2007, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


...и это пройдет...
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 6.5.2007
Где: Moscow, RU

Репутация: 12
Всего: 19



Цитата

нельзя ли развить мысль - чуть-чуть... торможу чего-то...  

не волнуйся, и это пройдет ))

смотри: вместо сцепки (не смейся, есть такой термин в теории языков программирования) двух приложений по внешним данным (вншн БД) или по параметрам (как ты вначале хотел) можно использовать design pattern фасад.

что это значит: ты имеешь два независимых ejb-приложения (банкиры и чего-то там), и к ним у тебя два независимых клиента (web-apps). вместо двух этих независимых ты делаешь одно, которое будет взаимодействовать с обоими бинами. это и будет фасадом )
в нем у тебя уже таких проблем описанных тобой. не будет )


--------------------
и это пройдет....

http://ekrs.blogspot.com
PM WWW   Вверх
Maverick
Дата 29.5.2007, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



неа... так не прокатит... дело в том, что адрес используется очень много где (около 20 приложений)... система общая из модульной превратиться в единую... будет одно гигантское приложение... тоже будет нерадостно....  smile     мы уже думали об этом.... но слишком уж годзильно получается... лучше все-таки механизм взаимодействия продумать единый... 


--------------------
smile
PM ICQ GTalk   Вверх
ekr
Дата 29.5.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


...и это пройдет...
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 6.5.2007
Где: Moscow, RU

Репутация: 12
Всего: 19



Цитата

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

отнюдь. ты деплоишь бин адреса как независимый jar-модуль и к нему останется доступ из остальных приложений. абсолютно независимых )

Цитата

лучше все-таки механизм взаимодействия продумать единый... 

ок, смотрите сами ) фишка паттерна фасад как раз в том, что приложения так и остаются независимыми, а эта надстройка - фасад - только как точка входа для клиентов. там изнес-логику сложную вообще можно не внедрять, только интерфейсную, для людишек )))


--------------------
и это пройдет....

http://ekrs.blogspot.com
PM WWW   Вверх
Maverick
Дата 29.5.2007, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Цитата(ekr @  29.5.2007,  17:05 Найти цитируемый пост)
Цитата

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

отнюдь. ты деплоишь бин адреса как независимый jar-модуль и к нему останется доступ из остальных приложений. абсолютно независимых )


да... все EJB будут отдельными jar... но web-приложение-то будет одно?


--------------------
smile
PM ICQ GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0971 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.