Шов и многочисленные войны - PullRequest
2 голосов
/ 26 октября 2010

Я использую Seam 2.2.1.CR1 в Weblogic 10.3.2 и JSF 1.2.

У меня есть приложение на ухо с двумя военными файлами. Первая война - это приложение JSF / Seam, вторая - с JSF / Seam, но также с несколькими страницами сервлетов.

Когда я устанавливаю вещи в контексте сеанса в первом веб-приложении:

Contexts.getSessionContext().set("pimUser", pimUser);

Я могу добавить его в компоненты Seam во время второй войны. Однако, если я пытаюсь получить отключенный pimUser от сервлета, я не могу получить к нему доступ:

PimUser user1 = (PimUser) Contexts.getSessionContext().get("pimUser");

Contexts.getSessionContext () является нулевым. Я заметил, что Javadoc

org.jboss.seam.contexts.Contexts

Говорит:

Provides access to the current contexts associated with the thread.

Автор (ы): Гэвин Кинг Томас Хьют

Значит ли это, что 2 файла войны должны иметь разные Contexts.getSessionScope()?

Я нашел способ, который позволяет мне получить к нему доступ через сеанс, например:

PimUser user2 = (PimUser) httpRequest.getSession().getAttribute("pimUser");

Последний способ, однако, не кажется правильным. Я хотел бы получить доступ к контексту сеанса Seam через Seam.

Я обнаружил, что раньше (?) Возникали проблемы с приложениями Seam и multi-war ( link ), однако предполагается, что они устранены в 2.2.0.GA.

1 Ответ

3 голосов
/ 27 октября 2010

Обычный сервлет не получает доступа к контекстам Seam по умолчанию: Замена сервлетов ресурсами Seam . Сначала необходимо интегрировать его, либо , завернув вызов в контексты шва , либо , заменив сервлет швом AbstractResource.

Я использовал оба способа раньше, и они отлично работают. Лично я предпочитаю AbstractResource, потому что вы можете избавиться от соответствующей конфигурации web.xml.

...