问题标签 [stateful-session-bean]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1562 浏览

java - Java EE NameNotFoundException;

我从我的 Java EE Web 应用程序中收到此注入/JNDI 查找错误:

不知道这里贴什么代码,请告诉我,谢谢。

这是我的 web.xml:

这是我对 ejbs 的操作类:

这是我的 OPRSystem 类:

这是我的项目结构:

在此处输入图像描述

0 投票
2 回答
1860 浏览

java - 跨客户端复制有状态 EJB 和相同会话

我有一个有状态的 EJB,用于将当前用户信息保存在我的应用程序中。这个 EJB 被注入到 servlet 控制器并用于存储最后登录的用户。但是,会话似乎在每个客户端上都是相同的。

示例 EJB 代码:

示例 Servlet 代码:

现在,当应用程序部署在我的服务器上并且我有许多不同的人从几个不同的客户端与服务器交谈时,用户名总是设置为最后一个登录的用户。换句话说,看起来好像有状态会话 bean在所有客户端上保持相同的状态。这让我非常困惑,因为我在 java 6 ee 教程中读到了第 247 页的以下引用:

在有状态会话 bean 中,实例变量表示唯一客户端/bean 会话的状态。因为客户端与其 bean 交互(“交谈”),所以这种状态通常称为会话状态。顾名思义,会话 bean 类似于交互式会话。会话 bean 不共享;它只能有一个客户端,就像交互式会话只能有一个用户一样。当客户端终止时,它的会话 bean 似乎也终止并且不再与客户端关联。

有人可以解释为什么会发生这种情况,还可以解释如何以正确的方式使用有状态的 bean,而不是在所有客户端上保持相同的状态?

谢谢你。

0 投票
1 回答
3502 浏览

servlets - EJB 问题 - 有状态会话 Bean 和 Servlet

我有一个调用 ejb 有状态会话 bean 代码的 servlet 代码,如下所示,

此代码在没有 * 标记之间的情况下运行良好。但是,当我添加SessionBeanSFRemote sessionBeanSF = lookupSessionBeanSFRemote()这一行(意味着调用有状态会话 Bean)时,代码给出了错误。实际上,我必须调用无状态会话 bean 才能执行某些工作。谁能帮助我为什么会这样?提前致谢。

错误信息如下:

类型异常报告消息

例外

根本原因

根本原因

根本原因

根本原因

根本原因

根本原因

服务器:GlassFish Server 开源版 3.0.1

0 投票
3 回答
476 浏览

jakarta-ee - 有状态会话 Bean - 状态丢失问题

我有一个 servlet 代码,它调用有状态会话 bean 代码并增加它的 int 值。但是,当我下一次调用 servlet 和它对应的 bean 时,bean 失去了它的状态,并再次从递增的开始开始。谁能帮我解决这个问题。我的代码如下:

0 投票
1 回答
3443 浏览

jsf-2 - 带有 CDI 托管 Bean 和有状态会话 Bean 的 LazyInitializationException

我有一个注入了有状态会话 Bean 的 CDI 托管 Bean(在 JSF 上使用的带有 @Named 注释的 Bean)。这个会话 bean 就像一个服务,它有实体管理器(用 @PersistenceContext(type= PersistenceContextType.EXTENDED) 注释)并公开一些方法来操作一些实体。这些实体位于 ConversationScoped 的托管 bean 上。然后,JSF 调用托管 bean 的方法,托管 bean 调用“服务”(有状态会话 bean)的某个方法。我不知道这是否是最好的设计,但它运作良好。但是有一个实体有一些需要用 LAZY 获取的集合。第一次打开页面时,它似乎运行良好,但是当我尝试单击任何按钮或执行任何操作时,我有 LazyInitializationException。有人有任何提示吗?不知道有没有什么问题。我将会话 bean 设置为有状态的并扩展了持久性上下文。此会话 bean 被注入到具有实体的托管 bean 中。为什么会抛出这个异常?实体管理器怎么可能被关闭?

这是有问题的实体的代码:

这是有状态会话 Bean:

托管 bean 调用会话 bean 的方法 getParametrosVingentes()。我使用 ParametrosUtil 的静态方法来获取(如果存在)或创建(如果不存在)ParametrosVingentes。这是因为应用程序中必须只有一个 ParametrosVingentes。它是具有其他组件使用的参数的 bean。这是 ParametrosUtil 的代码:

这是托管 bean:

这是JSF:

如您所见,有些字段与应该使用 LAZY 获取的集合绑定。

这是堆栈跟踪:

我认为在服务的 getParametrosVingentes 方法结束时,EntityManager 是清晰的,并且所有实体都被分离。会不会是问题?

我在 Glassfish 3 上运行它,使用 Mojarra 2.1.2 和 EJB 3.1。谢谢你的帮助。

0 投票
3 回答
8588 浏览

quartz-scheduler - 如何从 Quartz Job 访问 EJB

好吧,我正在使用 Quartz 在我的应用程序中安排一些我需要的工作。但是,我需要一些方法来访问我的 Job 上的 Stateful SessionBean。我知道我不能用@EJB 注入它。谁能帮我?谢谢。

0 投票
4 回答
4871 浏览

jakarta-ee - 在无状态、java ee 6 中访问现有的有状态实例

是否可以在无状态 bean 中访问有状态会话 bean?

我的问题是我有一个名为 User 的会话 bean,我想访问无状态 bean 中的用户信息......

我正在尝试这样:

Ejb端:

客户端

这个测试用例的结果是java.lang.AssertionError: expected:<null> but was:<Alex>

它失败了..似乎我请求有状态bean的方式正在向我返回一个新实例...

  1. 我知道为什么这不起作用。因为我的测试失败了:P。我得到一个新实例..
  2. 我想在 EJB 中检查登录用户的某些权限,因为我不想指望客户端,因为我可能会在那里犯错,或者我会告诉其他开发人员为我的项目制作 GUI。
  3. 我不想使用 Java EE Security,因为我不知道如何在 RCP 应用程序中进行登录
  4. 我的主要问题是:如何访问 EJB 中的会话 bean(与客户端相同的).. 可能吗?如何?

我问的几乎和这个人问的一样:Concept for reusable login session in rmi ejb calls

我想这样做,但不是用 JAAS ......

先感谢您

0 投票
2 回答
1872 浏览

java - EJB 访问有状态会话 Bean NameNotFoundException

我正在使用有状态会话 bean 来创建购物篮。我无法访问我的 bean 并收到以下错误

我认为问题出在我的查找中

我不确定要在查找字符串中放入什么

BasketBeanRemote在一个名为的包中ejb.remote,我BasketBeanejb.beans我的 ejb 项目中

查找中应该包含什么?我正在从我的战争项目中访问它。

0 投票
1 回答
327 浏览

jsf-2 - Glassfish 中创建了多余的 SFSB,从而导致内存泄漏

我正在尝试将单个 SFSB 注入 Glassfish 3.1.1 中的 ViewScoped JSF 支持 bean。

我的日志显示了这一点,即创建了两个 SFSB,尽管只有第二个被注入:

后来,当我离开并且 ViewScoped bean 超出范围时,我在 SFSB 上调用 remove(),因此我在日志中看到了这一点:

但是以@f48cde0 结尾的多余的第一个从未被注入,所以我没有处理它,它永远不会被删除。只是后来,当我关闭服务器时,我看到它被删除了。

这是我的代码:

支持bean:

SFSB 接口:

SFSB 实施:

最后,jsf 页面:

这是一个如此简单的设置......它到底是什么?也许是 Glassfish 中的一个错误?

编辑: 为了消除对我所报告内容的真实性的任何“怀疑”,这是我加载页面 10 次时的日志。注意创建了 20 个 SFSB,每次 2 个,但当我离开时只清理了 1 个。

最后,当我卸载应用程序时,请注意 10 个多余的 SFSB 最终被销毁:

相信我的话,基于我的声誉,即该行为适用于 100 次点击,导致 200 个 bean 以相同的模式出现。

0 投票
1 回答
99 浏览

ejb - EJB Spec 3.1 有状态的转换状态

我是新的。

我不明白 EJB 3.1 规范的后续步骤(第 4.2 节)

有状态会话对象的会话状态被定义为会话 bean 实例的字段值、其关联的拦截器和它们的实例字段值,以及通过跟随 Java 对象引用到达的这些实例字段的对象的传递闭包。

任何人,可以告诉我广告的例子,好吗?

提前致谢

毛罗