使用 Stateful Session Bean 来跟踪用户的会话

2024-01-23

这是我的第一个问题,我希望我做得对。

我需要从事 Java EE 项目,因此,在开始之前,我尝试做一些简单的事情,看看是否能做到。

我被困住了有状态会话 Bean.

这是问题: 我怎样才能使用SFSB跟踪用户的会话? 我看到的所有例子最终都“放入”SFSB into a Http会话属性。 但我不明白为什么! 我的意思是,如果 bean 是有状态的,为什么我必须使用Http会话保留它?

EJB容器的任务不是返回正确的吗SFSB给客户?

我尝试过使用简单的反豆。 在不使用会话的情况下,两个不同的浏览器具有相同的计数器 bean(单击“增量”更改了它们的值)。 使用会话,我有两个不同的值,每个值适用于每个浏览器(在 Firefox 上单击“增量”,仅向 Firefox 的 bean 添加一个值)。

但我的老师告诉我SFSB保持“与客户的对话状态”,那么为什么它不能在不使用Http会话 ?

如果我理解正确的话,没有使用Http会话 with a SFSB与使用 a 做的一样SLSB反而?

我希望我的问题很清楚并且我的英语没那么差!

编辑 : 我正在开发登录系统。 一切顺利,完成登录后,我将进入显示用户数据的个人资料页面。 但是重新加载页面会使我的数据消失! 我尝试过添加Http会话虽然正在记录,但这样做可以使数据即使在注销后仍然保留!


有状态会话 Bean (SFSB) 必须与 Web 环境中的 HTTP 会话结合起来,因为它是一个纯业务 Bean,本身对 Web 层一无所知。

传统上,EJB 甚至强制存在于它们自己的模块(EJB 模块)内,如果它们愿意,甚至无法访问 Web 工件。这是分层系统的一个方面。看使用 JavaEE 6 WAR 与 EAR 封装 EJB https://stackoverflow.com/questions/4441237/packaging-ejb-in-javaee-6-war-vs-ear/4539419#4539419了解更多相关信息。

有状态会话 Bean 的原始客户端包括 Swing 桌面应用程序,它们通过二进制协议与远程 EJB 服务器进行通信。 Swing 应用程序将通过代理/存根对象获得与远程有状态会话 Bean 的连接。该代理中嵌入了某种 ID,服务器可以将其与特定 SFSB 关联。通过保留此代理对象,Swing 客户端可以重复调用它,并且这些调用将转到同一个 bean 实例。这将在客户端和服务器之间创建一个会话。

对于 Web 应用程序,当浏览器向 Java EE Web 应用程序发出初始请求时,它会得到一个JSESSIONID服务器可以与特定的HTTPSession实例。通过坚持这一点JSESSIONID,浏览器可以向它提供每个后续请求,这将激活相同的 http 会话服务器端。

因此,这些概念非常相似,但它们不会自动相互映射。

浏览器只获取JSESSIONID并且不了解任何 SFSB ID。与 Swing 应用程序不同,浏览器与网页通信,而不是直接与 Java bean 通信。

为了将客户端的请求映射到特定的有状态会话 bean,EJB 容器只关心通过 SFSB 代理提供的 ID。它无法查看调用是否恰好源自 Web 模块中的代码,并且不能/不应该真正访问任何 HTTP 上下文。

作为访问 SFSB 的客户端代码的 Web 层必须“保留”特定的代理引用。保留 Web 层中的某些内容通常意味着将其存储在 HTTP 会话中。

然而,有一种桥接技术称为CDI可以进行这种自动连接。如果您使用 CDI 注释您的 SFSB@SessionScoped并通过 CDI 获取对 SFSB 的引用(例如使用@Inject),您不必手动将 SFSB 放入 http 会话中。然而,无论如何,CDI 在幕后都会这样做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Stateful Session Bean 来跟踪用户的会话 的相关文章

  • Jquery Ajax 调用返回 403 状态

    我有一个 jquery Ajax 调用来实现会话的 keepalive 这个 keepAlive 方法将每 20 分钟调用一次 function keepAlive ajax type POST url KeepAliveDummy asp
  • 会话销毁后如何使 viewscoped beans/viewmap 生存(使用客户端保存)?

    我在用着Myfaces 2 2 具有客户端状态保存功能 我看到 ViewScoped beans 和存储在 viewmap 中的数据在用户会话销毁后丢失 我开始知道 不确定这是否正确 这是预期的行为 但是在会话销毁后避免查看过期异常的方法是
  • 登录后,Codeigniter 会话数据在其他页面不可用

    因此 我设置了一个登录页面来验证用户的凭据 然后设置 codeigniter 会话数据 email 和 is logged in 以及其他一些项目 登录后第一页 数据即可访问 在该页面之后 我无法再访问会话数据 事实上 如果我尝试重新加载第
  • 如何使用python登录页面,该页面需要服务器在第一次请求时响应会话ID?

    我正在编写一个脚本来登录某个网页 我使用 request 和 request session 模块来实现此目的 在使用登录参数的第一个请求时 服务器响应一个会话 ID 如何设置该会话 ID 以进一步登录到同一页面 url some url
  • 在 Java Web 应用程序中获取 DataSource 资源

    我的 context xml 文件中有以下资源标记
  • Session_set_save_handler 未设置

    我在设置 session set save handler 时遇到问题 我将 php ini 配置为 session handler user 这个简单的测试失败了 Define custom session handler if sess
  • EJB:无接口的依赖注入

    我有这个代码 Local interface IRepo Stateless class Repo implements IRepo class WebS EJB private IRepo repo 并且一切正常 但现在我删除了界面IRe
  • 无法使用 ASP.NET 会话状态提供程序连接到 Redis 服务器

    一段时间以来 我一直在尝试用 Redis 替换 ASP NET Session 多个小时与适用于 Redis 的 Microsoft ASP NET 会话状态提供程序 http blogs msdn com b webdev archive
  • NodeJS 超级测试对会话对象的访问

    我正在使用 supertest 测试我的 Node js 应用程序 在我的控制器中 我访问会话对象 为了发出有效的请求 该会话对象需要填充一些数据 控制器 determine whether it is user s own profile
  • Rails 会话间歇性重置

    我知道这个主题已经被讨论了很多 但我相信我已经找到了它的一个新变体 我有一个 Rails 4 应用程序 它是从 Rails 3 升级的 并且具有rails ujs and csrf meta tags设置正确 一旦root url在浏览器中
  • OnPostAuthenticateRequest 中的 HttpContext.Current.Session 为 null

    这是一个n00b问题 也许你可以帮忙 当我在Application OnPostAuthenticateRequest事件 我无法查看Session since HttpContext Current Session一片空白 这是空的原因吗
  • Tomcat 如何保持会话完整性?

    HttpServletRequest s 获取会话 布尔值 http download oracle com javaee 6 api javax servlet http HttpServletRequest html getSessio
  • 会话在选项卡之间共享

    我有 JAVA Web 应用程序 我需要停止在浏览器选项卡之间共享会话 这意味着 用户打开浏览器 登录其帐户并在同一浏览器的新选项卡中打开特定页面 根据默认设置 会话将共享到新选项卡 并且用户会自动登录到新选项卡 谁能告诉我如何阻止这种情况
  • CDI 和 EJB 相比如何?相互影响?

    我很难理解两者如何相互作用以及它们之间的界限在哪里 它们重叠吗 他们之间有裁员吗 我知道两者都有相关的注释 但我无法找到两者的完整列表和简短描述 不确定这是否有助于澄清它们的不同之处或重叠之处 真的只是很困惑 我 认为我 对 EJB 相当了
  • 异步方法的默认 EJB 事务模式?

    当我有一个 AsynchronousEJB 中的方法 并且我没有指定 TransactionAttribute 那么容器到底是如何处理事务边界的呢 显然 它不能使用调用线程的事务 那么它是做什么的呢 同样的问题 但涉及由 TimerServ
  • ruby on Rails,会话过期通知

    我正在使用 ruby 1 9 3 和 Rails 3 2 我的实际会话处理如下所示 会话助手 def sign in user cookies remember token value user remember token expires
  • OWIN中间件可以使用http会话吗?

    我有一些为 ASP NET 和 SignalR 复制的代码 我决定将其重写为 OWIN 中间件以删除这些重复 一旦我运行它 我注意到HttpContext Current Session为空 并且我没有看到任何会话对象IOwinContex
  • Spring Bean 属性“xxx”不可写或具有无效的 setter 方法

    我是一个 Spring 新手 有一个看似简单的 Spring 问题 我为此工作了几个小时 但没有运气 这是例外情况 后面是代码 提前感谢您 Exception in thread main org springframework beans
  • 如何终止会话或会话 ID (ASP.NET/C#)

    当用户单击注销按钮时 如何销毁会话 会话 名称 我正在 MSDN 上查看 ASP NET API Reference 它似乎没有太多信息 看来还是比较有限的 但我找不到 ASP NET 类等的任何其他页面 我努力了 Session Aban
  • PHP session_regenerate_id 和黑莓浏览器

    问候 我正在开发一个登录系统 并陷入了黑莓浏览器身份验证的困境 他们似乎对 PHP 的 session regenerate id 有问题 有人可以建议替代方案吗 以下是身份验证和登录脚本 UPDATE看来会话一般都不起作用 拿出 sess

随机推荐

  • 链接影响不同元素的 jQuery 动画

    document ready function div1 fadeIn slow div2 delay 500 fadeIn slow div3 delay 2000 fadeIn slow div4 delay 8000 fadeIn s
  • Mediatr:减少 DI 对象的数量

    我有很多命令和查询 其中大多数需要相同的接口来完成不同的事情 是否有可能如何减少我的每个处理程序都需要的这种混乱 并且一遍又一遍地重复 public class GetCoinByIdQueryHandler IRequestHandler
  • 使用 SOAP,还是不使用 SOAP?就是那个问题

    我有 3g 手机协议栈的背景 现在我需要从 Android 平板电脑与服务器进行通信 我将对接口的两侧进行编码 更新 我应该说 从 Android 多个 slate 到本地服务器 多个 然后通过卫星到单个中央主服务器 现在我想我可能不会实施
  • 生成日期范围的数据,包括数据中不存在的日期

    这是我的表结构和数据 CREATE TABLE event EventID INT 11 NOT NULL AUTO INCREMENT EventDate DATETIME DEFAULT NULL Description VARCHAR
  • 使用projectile在.dir-locals中设置flycheck-clang-include-path

    尝试设置 Flycheck clang include path 而无需包含项目的完整路径 包括使用弹丸的目录 但我收到错误 所以这有效 nil company clang arguments home user Downloads pro
  • 使用 dlopen 动态加载共享库

    我正在尝试使用 dlopen 加载 TestCode so getNumber 是我想从 TestCode so 使用的函数 但是当我加载 so 时 我无法使用该功能 它给出了分段错误 示例程序 测试头 hpp ifndef HEADER
  • 使用 dlib 面部标志裁剪面部

    我正在尝试使用 dlib 识别的面部标志来裁剪面部 右眉毛造成了问题 眉毛是平的而不是沿着眉毛的弧线 我在这里做错了什么 from imutils import face utils import imutils import numpy
  • 在 Pig 中解析复杂的 JSON 字符串

    我想在 Pig 中解析一串复杂的 JSON 具体来说 我希望 Pig 将我的 JSON 数组理解为一个包 而不是单个字符数组 使用 JsonLoader 时 我可以通过指定架构轻松完成此操作 如下所示这个问题 https stackover
  • C#中复制大量数据的方法

    我正在使用以下方法将目录的内容复制到不同的目录 public void DirCopy string SourcePath string DestinationPath if Directory Exists DestinationPath
  • onpreviewframe byte[] 到 int[]

    在预览帧中 我得到 ImageFormat RGB 565 中的字节 现在我想将此 byte 转换为 int 以便我可以进行一些像素操作 我怎么能这么做呢 附 到目前为止 我是这样做的 但似乎还没有优化 public void onPrev
  • 获取日期格式/文化

    如何指定输入字符串的哪一部分是日期和月份 如果输入是01 10 2017 这可以读作2017 年 10 月 1 日 and 2017 年 1 月 10 日 两者都是正确的 我想明确表示01是日期并且10是月份 这样无论区域设置和时间格式如何
  • ngForIn 可以在 Angular 4 中使用吗?

    我正在尝试使用迭代对象的属性 ngFor但使用in 当我尝试这样做时 Controller selector sample controller template ul li b i b obj i li ul class SampleCo
  • HTML/CSS:如何为 tr 创建滚动条

    有人可以告诉我如何为内表创建滚动条吗 内表不显示在容器内 我将容器的背景涂成黄色 桌子本身是蓝色的 我想在表格内看到一个滚动条 Source http nopaste info e51385254e html http nopaste in
  • java中如何实现国际化

    我有一堂课叫Info 我有一堆static String其中描述的变量 public class Info public static stringOne Hello public static stringTwo world 我希望访问这
  • 你明白这个僵局吗?

    我的 GUI 使用 wxPython 在里面AppLogic类我有一个工作线程 它在这个类的方法中运行 这是GUI class class GUI wx app None main window None app logic None de
  • SharpDX、DirectWrite 和 Windows 窗体

    可以使用 DirectWrite 将文本渲染到 WinForm 应用程序中的 PictureBox 中吗 我正在使用 SharpDX 并浏览了 DirectWrite 示例 试图构建最简单的工作案例 我创建了一个表单并只向其中添加了一个图片
  • 根据列值分割大型 csv 文本文件

    我的 CSV 文件有多列已排序 例如 我可能有这样的行 19980102 PLXS 10032 Q A 15 12500 15 00000 15 12500 2 19980105 PLXS 10032 Q A 14 93750 14 750
  • C++ 中单例的线程安全惰性构造

    有没有一种方法可以在 C 中实现单例对象 以线程安全的方式延迟构造 两个线程可能同时是单例的第一个用户 它仍然应该只构造一次 不依赖于预先构造的静态变量 因此在构造静态变量期间单例对象本身可以安全使用 我不太了解我的C 但是在执行任何代码之
  • 使用 maven-compiler-plugin 排除包适用于一个包,但不适用于另一个包

    我的项目具有以下包结构 src com my app school course Course java com my app school course free CourseFree java 我使用Maven来构建项目 在我的pom
  • 使用 Stateful Session Bean 来跟踪用户的会话

    这是我的第一个问题 我希望我做得对 我需要从事 Java EE 项目 因此 在开始之前 我尝试做一些简单的事情 看看是否能做到 我被困住了有状态会话 Bean 这是问题 我怎样才能使用SFSB跟踪用户的会话 我看到的所有例子最终都 放入 S