EAR 包和 Bean 如何共享会话 ID?

发布于 2024-12-22 23:36:21 字数 7586 浏览 2 评论 0原文

我有 3 个 EAR 包,它们组合在一起构成了一个巨大的 Web java 应用程序。是否可以将 bean 配置到包中以在它们之间共享会话 id 数据。我的想法是开发一个登录表单,使用会话 ID 将用户注册到数据库表中。每次用户浏览应用程序时,他们的会话 ID 都会用于识别用户。当用户在不同的 EAR 包和 bean 之间切换时,棘手的部分就出现了。会话 ID 将会改变,其他 Bean 将不知道新的会话 ID 是什么。有没有办法将 bean 配置到 EAR 包中以共享包含会话 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 代码,该代码从 beans 中获取 cookie 编号并将它们写入数据库。然后我运行购买的 EAR 包,看看它们是否会共享一个会话 ID。事实证明,同一个浏览器的一个客户端的 cookie id 是不同的。配置不起作用。我使用 JBoss 7.1.0

也许我弄错了放置 context.xml 文件的目录?

I have 3 EAR packages which combined together makes one huge web java application. Is it possible to configure the beans into the packages to share the session id data between them. My idea is to develop a login form which registers users into database tables using session id. Every time then users browse the application their session id is used to identify the users. The tricky part comes when users switch between different EAR packages and beans. The session id will change and other beans won't know what is the new session id. Is there a way to configure the beans into the EAR packages to share the data which contains the session id.


I created two identical EAR packages and I placed context.xml file in each one. This is the file structure:

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

I placed the context.xml file into WEB-INF directory and I added this line:

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

I added a java code which takes from the beans the cookie number and writes them into database. Then I run bought EAR packages to see are they going to share one session id. It turns out that that the cookie id from one client with one browser is different. The configuration is not working. I use JBoss 7.1.0

Maybe I have mistaken the directory where I have to place the context.xml file?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眉黛浅 2024-12-29 23:36:21

我认为正确的方法是选择单点登录选项。可用的开源项目很少,例如 JOSSO、OpenSSO 等。

I think the proper way is to go for Single Sign On options. There are few open source projects available like JOSSO, OpenSSO etc.

烟雨凡馨 2024-12-29 23:36:21

默认情况下,会话 cookie 绑定到上下文路径。您希望将它们绑定到域根(假设所有 Web 应用程序在同一域中运行),以便浏览器将相同的会话 Cookie 返回到在同一域中运行的所有 Web 应用程序上下文。您可以通过相应地设置 cookie 路径,通过绑定到域而不是上下文路径的自定义 cookie 来完成此操作:

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

或者通过配置 servlet 容器将默认会话 cookie 绑定到域而不是上下文路径。如果是 JBoss,请检查 context.xml 中的 设置:

<SessionCookie path="/" />

Session cookies are by default tied to the context path. You'd like to tie them to the domain root instead (assuming that all webapps runs on the same domain) so that the browser will return the same session cookie back to all webapp contexts running in the same domain. You could do it by either a custom cookie which is tied to the domain instead of the context path by setting the cookie's path accordingly:

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

or by configuring the servlet container to tie the default session cookie to the domain instead of the context path. In case of JBoss, check the <SessionCookie> setting in context.xml:

<SessionCookie path="/" />
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文