2011-12-25 2 views
0

У меня есть 3 пакета EAR, которые в совокупности составляют одно огромное приложение для веб-приложений. Возможно ли настроить компоненты в пакеты для совместного использования данных идентификатора сеанса между ними. Моя идея заключается в разработке формы входа, которая регистрирует пользователей в таблицах базы данных с использованием идентификатора сеанса. Каждый раз, когда пользователи просматривают приложение, их идентификатор сеанса используется для идентификации пользователей. Сложная часть возникает, когда пользователи переключаются между различными пакетами EAR и фасолью. Идентификатор сеанса изменится, а другие компоненты не будут знать, что такое новый идентификатор сеанса. Есть ли способ настроить компоненты в EAR-пакеты для совместного использования данных, содержащих идентификатор сеанса.Как пакеты 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

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

+1

Я знаю, что это сообщение старше, теперь его можно в jboss с минимальной конфигурацией. ссылка http://www.mastertheboss.com/jboss-server/wildfly-8/sharing-httpsession-between-web-applications-in-an-ear – Aadam

+0

Спасибо за обновление Aadam – Richie

1

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

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

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

<SessionCookie path="/" /> 
+0

Я использую Jboss 7. Будет ли он работать, если я добавлю это «» в каждую веб-сеть .EAR .xml-файл? –

+0

Куки-файлы сеанса будут отправляться только по каждому запросу, который соответствует указанному пути (и, следовательно, не по запросам, которые не соответствуют указанному пути). Если это именно то, что вы хотите, продолжайте. – BalusC