Как EAR-пакеты и бины могут совместно использовать идентификатор сессии? - PullRequest
0 голосов
/ 25 декабря 2011

У меня есть 3 пакета EAR, которые объединены в одно огромное веб-приложение Java. Можно ли настроить компоненты в пакеты для обмена данными идентификатора сеанса между ними. Моя идея состоит в том, чтобы разработать форму входа в систему, которая регистрирует пользователей в таблицах базы данных, используя идентификатор сессии. Каждый раз, когда пользователи просматривают приложение, их идентификатор сеанса используется для идентификации пользователей. Сложность возникает, когда пользователи переключаются между различными пакетами EAR и bean-компонентами. Идентификатор сеанса изменится, и другие компоненты не будут знать, что такое новый идентификатор сеанса. Есть ли способ настроить bean-компоненты в пакеты EAR для обмена данными, которые содержат идентификатор сеанса.


Я создал два идентичных пакета EAR и поместил файл context.xml в каждый. Это структура файла:

SR_57
├── pom.xml
├── SR_57-ear
│   ├── pom.xml
│   ├── src
│   │   └── main
│   │       └── application
│   │           └── META-INF
│   │               └── MANIFEST.MF
│   └── target
│       ├── application.xml
│       ├── maven-archiver
│       │   └── pom.properties
│       ├── SR_57-ear-1.0-SNAPSHOT
│       │   ├── META-INF
│       │   │   ├── application.xml
│       │   │   └── MANIFEST.MF
│       │   ├── SR_57-ejb-1.0-SNAPSHOT.jar
│       │   └── SR_57-web-1.0-SNAPSHOT.war
│       └── SR_57-ear-1.0-SNAPSHOT.ear
├── SR_57-ejb
│   ├── pom.xml
│   ├── src
│   │   ├── main
│   │   │   ├── java
│   │   │   │   └── com
│   │   │   │       └── SR_57
│   │   │   └── resources
│   │   │       └── META-INF
│   │   │           └── MANIFEST.MF
│   │   └── test
│   │       └── java
│   │           └── com
│   │               └── SR_57
│   └── target
│       ├── classes
│       │   └── META-INF
│       │       └── MANIFEST.MF
│       ├── endorsed
│       │   └── javaee-endorsed-api-6.0.jar
│       ├── maven-archiver
│       │   └── pom.properties
│       ├── SR_57-ejb-1.0-SNAPSHOT.jar
│       └── surefire
└── SR_57-web
    ├── faces-config.NavData
    ├── nb-configuration.xml
    ├── pom.xml
    ├── src
    │   ├── main
    │   │   ├── java
    │   │   │   └── com
    │   │   │       └── SR_57
    │   │   │           └── userCheck.java
    │   │   ├── resources
    │   │   └── webapp
    │   │       ├── home.xhtml
    │   │       ├── index.html
    │   │       ├── resources
    │   │       │   ├── css
    │   │       │   │   ├── sr_style.css
    │   │       │   │   └── style.css
    │   │       │   ├── images
    │   │       │   │   ├── 1.jpg
    │   │       │   │   ├── 2.jpg
    │   │       │   │   ├── 3.jpg
    │   │       │   │   ├── 4.jpg
    │   │       │   │   ├── 5.jpg
    │   │       │   │   ├── 6.jpg
    │   │       │   │   ├── 7.jpg
    │   │       │   │   ├── bg_1.jpg
    │   │       │   │   ├── bg.jpg
    │   │       │   │   ├── overlay_1.png
    │   │       │   │   ├── overlay.png
    │   │       │   │   ├── title_1.png
    │   │       │   │   └── title.png
    │   │       │   └── js
    │   │       │       ├── ChunkFive_400.font.js
    │   │       │       ├── cufon-yui.js
    │   │       │       ├── jquery.easing.1.3.js
    │   │       │       └── jquery.min.js
    │   │       ├── userNav.xhtml
    │   │       └── WEB-INF
    │   │           ├── context.xml
    │   │           ├── faces-config.xml
    │   │           ├── java.sql.Driver
    │   │           └── web.xml
    │   └── test
    │       └── java
    │           └── com
    │               └── SR_57
    └── target
        ├── classes
        │   └── com
        │       └── SR_57
        │           └── userCheck.class
        ├── endorsed
        │   └── javaee-endorsed-api-6.0.jar
        ├── generated-sources
        │   └── annotations
        ├── maven-archiver
        │   └── pom.properties
        ├── SR_57-web-1.0-SNAPSHOT
        │   ├── home.xhtml
        │   ├── index.html
        │   ├── META-INF
        │   ├── resources
        │   │   ├── css
        │   │   │   ├── sr_style.css
        │   │   │   └── style.css
        │   │   ├── images
        │   │   │   ├── 1.jpg
        │   │   │   ├── 2.jpg
        │   │   │   ├── 3.jpg
        │   │   │   ├── 4.jpg
        │   │   │   ├── 5.jpg
        │   │   │   ├── 6.jpg
        │   │   │   ├── 7.jpg
        │   │   │   ├── bg_1.jpg
        │   │   │   ├── bg.jpg
        │   │   │   ├── overlay_1.png
        │   │   │   ├── overlay.png
        │   │   │   ├── title_1.png
        │   │   │   └── title.png
        │   │   └── js
        │   │       ├── ChunkFive_400.font.js
        │   │       ├── cufon-yui.js
        │   │       ├── jquery.easing.1.3.js
        │   │       └── jquery.min.js
        │   ├── userNav.xhtml
        │   └── WEB-INF
        │       ├── classes
        │       │   └── com
        │       │       └── SR_57
        │       │           └── userCheck.class
        │       ├── context.xml
        │       ├── faces-config.xml
        │       └── web.xml
        ├── SR_57-web-1.0-SNAPSHOT.war
        └── surefire

64 directories, 75 files

Я поместил файл context.xml в каталог WEB-INF и добавил следующую строку:

<?xml version="1.0" encoding="UTF-8"?>
<SessionCookie path="/" />

Я добавил код Java, который берет из бобов номер куки и записывает их в базу данных. Затем я запускаю купленные EAR-пакеты, чтобы увидеть, будут ли они использовать один идентификатор сессии. Оказывается, что идентификатор cookie от одного клиента с одним браузером отличается. Конфигурация не работает. Я использую JBoss 7.1.0

Может быть, я ошибся в каталоге, где мне нужно разместить файл context.xml?

Ответы [ 2 ]

2 голосов
/ 25 декабря 2011

Я думаю, что правильный путь - использовать параметры единого входа.Есть несколько проектов с открытым исходным кодом, таких как JOSSO, OpenSSO и т. Д.

1 голос
/ 25 декабря 2011

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

Cookie cookie = new Cookie(name, value);
cookie.setPath("/");

или настроив контейнер сервлета для привязки файла cookie сеанса по умолчанию кдомен вместо контекстного пути.В случае JBoss проверьте настройку <SessionCookie> в context.xml:

<SessionCookie path="/" />
...