У меня есть 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?