问题标签 [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 投票
2 回答
6682 浏览

java - EJB 3:从应用程序客户端访问有状态会话 bean

我在从应用程序客户端访问有状态会话 bean (SFSB) 时遇到了一些问题。我正在使用 JBoss 5.0.1.GA。应用程序客户端和 EJB 都打包在一个 EAR 中进行部署,我还有其他应用程序客户端可以正常工作。到目前为止,我只使用了无状态会话 bean (SLSB),但据我了解,SLSB 和 SFSB 之间的差异不应该影响从应用程序客户端访问它们的方式。

类/接口的结构:

应用程序客户端通过“appclient-launcher”运行,如“如何在 JBoss 5 中使用应用程序客户端”中所述。在执行 init() 期间调用(本地)ABean 上的 someMethod() 之前,查找“BBean”工作正常。在该调用期间,容器抛出 InvalidStateException("Local call: security context is null") (作为根本原因)。当我将有状态 bean 更改为无状态 bean 时,一切正常(当然,除了没有保留状态)。有趣的是,我可以很好地使用来自 Web 应用程序(在 JSF 托管 bean 中)的完全相同的 SFSB。

难道我做错了什么?我应该如何从应用程序客户端使用 SFSB?

到目前为止,我还没有发现任何关于这个特定问题的有用信息。该异常在[#JBAS-4317] Security Context over the invocation中的类似上下文中提到,但考虑到它被标记为已完成并在 JBoss 5.0.0.Beta3 中已修复,这似乎不是同一个问题。

0 投票
2 回答
6819 浏览

java - 为什么使用有状态会话 bean?

我正在学习 EJB3,我只是好奇什么时候使用 SFSB 方便?当 SFSB 真正轻松解决一些复杂问题时,我找不到任何好的例子。

实际上,我看到 SLSB 可以用作 Web 服务,这很方便。但我不知道何时使用 SFSB。我只看到了它的问题,因为我们应该学习一些关于它的东西,我们应该编写包含更少注释的代码,我们应该使用烦人的查找......而且我们没有得到任何好的回报。

例如,我们不能在 SLSB 中使用 SFSB,因为有状态对象只能在有状态上下文中使用。我们不能在 servlet 中使用 DI,而是应该使用 JNDI 查找手动创建 SFSB 实例,然后将其放入 HttpSession 对象中。它不能是网络服务。

我在 SFSB 中看到的唯一好处是事务管理。但我认为,当我们真正需要事务而我们不需要数据库时,这种情况很少见。我可以想象,当我们将数据存储在 XML 文件中并使用 SFSB 中的事务管理来管理非关系数据库时,它会非常有用。

我几乎可以肯定我完全错了,所以给我一些 SFSB 使用的非常好的例子。

0 投票
7 回答
98469 浏览

java - 无状态和有状态企业 Java Bean

我正在阅读 Java EE 6 教程,并试图了解无状态会话 bean 和有状态会话 bean 之间的区别。如果无状态会话 bean 在方法调用之间不保留它们的状态,为什么我的程序会这样运行?

客户端

我期待 getNumber 每次都返回 0 但它返回 1 并且在我的浏览器中重新加载 servlet 会增加更多。问题在于我对无状态会话 bean 如何工作的理解,而不是库或应用程序服务器,当然。有人可以给我一个简单的 hello world 类型的无状态会话 bean 示例,当您将其更改为有状态时,它的行为会有所不同?

0 投票
1 回答
5160 浏览

java - 如何在 EJB3 中使用 JNDI 获取新的 Stateful Session Bean?

我正在尝试使用 JNDI 在 servlet 中获取新的有状态会话 Bean(作为局部变量)。我的doGet()方法有以下几点:

我试过包括java:comp/env但我所有的尝试都导致了命名异常。

我试图在@Stateful注释中绑定bean,使用各种猜测,比如@Stateful(name="beanName")@Stateful(mappedName="beanName")

0 投票
3 回答
4334 浏览

jsf - 为什么我不应该将 JSF SessionScoped bean 用于逻辑?

我正在使用带有购物车样式流程的 JSF 开发一个 Java EE Web 应用程序,因此我想收集多个页面上的用户输入,然后对其进行处理。

我正在考虑为此使用 EJB 3 有状态会话 bean,但我的研究使我相信 SFSB 不绑定到客户端的 http 会话,因此我必须通过 httpSession 手动跟踪它,一些附带问题这里 。. .

1)为什么称为会话bean,据我所知,它与会话无关,我可以通过将pojo存储在会话中来实现相同的目的。

2)能够注入它有什么意义,如果我要注入的只是这个SFSB的一个新实例,那么我还不如使用pojo?

所以回到我看到的主要问题,JSF 是一种表示技术,所以它不应该用于逻辑,但它似乎是收集用户输入的完美选择。

我可以将 JSF 会话范围 bean 设置为我的所有请求 bean 的托管属性,这意味着它被注入到它们中,但与 SFSB 不同的是,JSF 托管会话范围 bean 绑定到 http 会话,因此始终注入相同的实例只要 http 会话没有失效。

所以我有多层

第一层)处理表示的 JSF 管理的请求范围 bean,每页 1 个。
第 2 层)一个 JSF 管理的会话范围 bean,其值由请求 bean 在其中设置。
第三层)一个无状态会话 EJB,它对 JSF 会话范围 bean 中的数据执行逻辑。

为什么这么糟糕?

另一种选择是使用 SFSB,但是我必须将它注入到我的初始请求 bean 中,然后将其存储在 http 会话中并在每个后续请求 bean 中重新获取它 - 看起来很混乱。

或者我可以将所有内容都存储在会话中,但这并不理想,因为它涉及使用文字键和强制转换。等..等容易出错。. . 和凌乱!

任何想法都值得赞赏,我觉得我正在与这项技术作斗争而不是使用它。

谢谢

0 投票
1 回答
170 浏览

jakarta-ee - 如何拆分 SFSB Facade?

我在开发基于 EJB 3 技术的应用程序时遇到了一些问题。

我想在会话 bean 中使用外观模式来将我的客户端(Web 应用程序)与我的实体 bean 分离。

我正在使用 SFSB 来管理用户会话。

所以我有一个FacadeLoginRemote远程接口,它向客户端公开方法doLogin()doLogout()等...目前这个 SFSB 还包括一些其他方法,例如getCourse(int id)getResource(int id)。并非所有用户都能真正获得课程获得资源,因此 Facade 在将值返回给客户端之前会执行一些检查。

我想拆分外观,将方法getCourse()放在getResource()一个特殊的类中,但留给FacadeLoginRemote检查用户权限的功能。

如果我制作一些不同的 SLSB,我会将它们公开给客户。因此,客户端将有可能直接连接到它们,避免来自FacadeLoginRemote.

我错了吗?有没有办法做到这一点?

提前致谢,

安德烈亚

0 投票
1 回答
7738 浏览

jsf - sessionscoped 托管 bean 与有状态 ejb

如果我有@ManagedBeanthat's @SessionScoped,我为什么要使用@StatefulEJB?我之前将它用于购物车并维护会话状态,但由于在用户会话期间将保留托管 bean,因此我可以将状态存储在那里,然后调用 SLSB 进行业务逻辑。那是对的吗?如果是,那么有状态的 ejb 将留给更具体的应用程序,例如何时需要事务等?

0 投票
1 回答
412 浏览

seam - 有状态 ejb 上的类强制转换异常

出于某种奇怪的原因,我得到了以下异常。

我知道它不应该是类转换异常,因为它是正确的类。

代码是:

班级是

谁能发现我犯的错误?

0 投票
1 回答
306 浏览

jboss - 为什么只有一个有状态会话 bean?

我尝试了以下有状态会话 bean 的示例http://www.roseindia.net/ejb/example-of-statelfulbean.shtml,但是当我使用两个浏览器时,我只能得到相同的会话 bean。
我认为每个连接/客户端都有一个会话 bean。怎么了?

我使用 JBoss 5.0.1 AS 进行测试和部署。
感谢您的任何建议。

0 投票
1 回答
2199 浏览

java - 集群中的单例与有状态远程 EJB 引用

我正在使用带有几个项目的 vanilla JBossAS 6 服务器来测试集群 JBoss 环境的功能。我遇到的问题是,如果我将 EJB 引用从节点中的一个 EJB(另一种类型)传输到另一个节点中相同类型的实例,则在方法调用时会引发异常,说明long_alphanumeric_key键指定的 bean 未在缓存中注册 (InfinispanStatefulCache)。

问题是,当在我需要传输的对象上使用单例注释而不是有状态注释时,传输的对象可以完美地工作,成功地在创建它的服务器上调用共享 EJB 的方法。问题是这种情况与 HA-Singleton 有相同的缺陷。之前通过在 HA-JNDI 树上查找获得的所有传输的引用。

关于我要实现的目标的一些见解:

我目前需要的是在节点之间共享有状态 EJB 的单个实例,例如 HA-Singleton。不使用 HA-Singleton 的原因是这种类型的单例的状态是专门维护在集群的主节点上的,所以如果节点关闭或失败,实例的状态就会丢失。

使用有状态 bean 可以让我维护集群上的状态,从而防止在节点故障时状态丢失。我还没有完全理解 JBoss 和 Infinispan 缓存是如何工作的,但据我所知,@Clustered 带注释的有状态 bean 的状态会自动复制到集群上。

我们已经被警告过在当前 JBoss 版本中使用 Singletons 和 HA-Singletons 的问题,所以任何类型的文档或模式来帮助解决这个设计变更都是受欢迎的。

另外,如果有任何文档可以让我深入了解 Infinispan 缓存和 JBoss 集群如何工作,我将不胜感激。到目前为止,我一直在阅读的材料与使用 JBossCache 而不是 Infinispan 的旧 JBoss 版本混合在一起。

提前致谢,
德语