我有3個EAR包,它們結合在一起構成一個巨大的Web Java應用程序。是否可以將bean配置到包中以共享它們之間的會話標識數據。我的想法是開發一個登錄表單,使用會話ID將用戶註冊到數據庫表中。每次用戶瀏覽應用程序時,他們的會話標識都用於標識用戶。棘手的部分來自用戶在不同的EAR包和bean之間切換。會話ID將會改變,其他bean將不知道新的會話ID是什麼。有沒有辦法將bean配置到EAR包中來共享包含會話ID的數據。EAR包和bean如何共享會話ID?
我創建了兩個相同的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代碼從豆該cookie取編號並將它們寫入數據庫。然後我運行購買的EAR包,看看他們將共享一個會話ID。事實證明,來自一個客戶端和一個瀏覽器的Cookie ID是不同的。配置不起作用。我使用JBoss 7.1.0
也許我誤以爲必須放置context.xml文件的目錄?
我知道這個帖子是舊的,現在它可能在最低配置的jboss。鏈接http://www.mastertheboss.com/jboss-server/wildfly-8/sharing-httpsession-between-web-applications-in-an-ear – Aadam 2016-02-23 07:33:10
感謝您的更新Aadam – Richie 2016-02-24 21:46:00