2011-12-25 49 views
0

我有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文件的目錄?

回答

2

我認爲正確的方法是去單點登錄的選項。有幾個像JOSSO,OpenSSO等可用的開源項目。

+1

我知道這個帖子是舊的,現在它可能在最低配置的jboss。鏈接http://www.mastertheboss.com/jboss-server/wildfly-8/sharing-httpsession-between-web-applications-in-an-ear – Aadam 2016-02-23 07:33:10

+0

感謝您的更新Aadam – Richie 2016-02-24 21:46:00

1

會話cookie默認綁定到上下文路徑。您希望將它們綁定到域根目錄(假設所有webapps都在同一個域中運行),以便瀏覽器將同一個會話cookie返回到在同一個域中運行的所有webapp上下文。

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

或通過配置servlet容器默認會話cookie綁到域,而不是:你既可以由它通過相應設置cookie的路徑依賴於域,而不是上下文路徑的自定義Cookie做的上下文路徑。在JBoss中的情況下,檢查context.xml<SessionCookie>設置:

<SessionCookie path="/" /> 
+0

我使用Jboss 7.如果我在每個.EAR的web中添加這個「」 .xml文件? – 2011-12-25 20:40:47

+0

會話cookie只會在每個匹配指定路徑的請求上發送(因此不會發送與指定路徑不匹配的請求)。如果這正是您想要的,請繼續。 – BalusC 2011-12-26 03:31:16