问题标签 [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 回答
393 浏览

java - 有什么方法可以中断有状态会话 bean?

这个问题与不使用线程处理 EJB3 中的超时有些相关。

背景:我有一个操作可能在运行时锁定的示例,如果发生这种情况,我必须能够处理这种可能性并终止操作。该解决方案必须与应用程序服务器无关,因此不能选择具有超时值的容器管理事务。

实际问题:我在有状态会话 bean 中运行操作并使用外部 @Timeout 方法对其进行监视的解决方案的一个想法,但要使其正常工作,我需要能够中断或取消该会话 bean。有没有办法做到这一点?

0 投票
2 回答
6097 浏览

java - 如何管理有状态的 Web 服务?

我正在尝试了解 J2EE 和 Web 服务(在 GlassFish 3.1 中)。这个问题是对此的一个跟进。

我已经弄清楚如何使用无状态会话 Bean 和 Web 服务。我实际上只是@WebService出于方便而使用 Web Service (),因为我宁愿不手动解析消息。虽然如果可能的话,我更喜欢比 SOAP 更轻的东西。但是,当我想保持某种状态(例如通过有状态会话 Bean)时,我遇到了问题。我已经搜索了这个站点和其他几个建议我避免这种情况的站点,因为它可能导致难以找到错误并限制可扩展性。

假设我有一个用户刚刚执行了“userLogin”方法并且成功了。然后我如何在服务器上知道用户已经登录。例如,在登录后,用户可能会通过 SOAP(不带任何参数)调用“getProfile()”,我会为该用户返回正确的信息。我知道通过附加到我的有状态会话 Bean 是不可能的,@WebService因为这仅对@Stateless.

如果我使用 HttpSession(带有 HttpServlet)和无状态会话 Bean,我知道如何存储状态,但是我不能使用生成良好的 SOAP 消息。

所以我的问题是:我将如何解决维护用户状态的问题,或者调整问题以使我不需要状态?

0 投票
3 回答
3048 浏览

java - EJB3如何确保在删除bean之前发生事情

假设我让我的客户使用 Stateful Session Bean 预订飞机上的座位。如果客户端显式调用了我的 Remove 方法,他的所有保留都将被取消,然后 bean 将被删除。

但是,如果客户端空闲一段时间并且 Bean 被钝化,如果 Bean 在被钝化时超时,它将被删除而不调用我的任何函数。因此,如果有人能告诉我如何确保在删除 bean 时取消预订,我将不胜感激。如果我使用@PreDestroy 注释,它会解决这个问题吗?

最好的问候,詹姆斯·特兰

0 投票
1 回答
548 浏览

java - 有状态会话 Bean 在反序列化后不会获得默认值

我正在阅读一本 EJB 3.1 书(O'Reilly、Andrew Lee Rubinger 和 Bill Burke),作者在其中提到(这些不是书中的确切文字,这是我自己对文本的理解):

在 SFSB 中,当它被激活时(从钝化池中出来后),序列化的对象,不像它们的原始规范,不会返回默认值,比如 int 不能保证返回 0 并且 object 不能保证返回 null

我的理解正确吗?如果是真的,为什么 EJB 会有这种行为?

http://www.coderanch.com/t/546765/java-EJB-SCBCD/certification/why-serialization-unpredictable-SFSB#2481285上的原始帖子

0 投票
0 回答
234 浏览

java - 在 Java Swing 中使用 SwingWorker 的有状态会话 bean 的不同对象

我在 Swing 中有一个自定义进度条面板,我想在其中显示冗长操作的进度。所以我创建了两个swingworkers:

  1. 在 bean 管理的有状态会话 bean (longyTask) 中执行实际冗长操作的一种
  2. 一种基于标志(statusTask)在循环中向 ssb 询问进度的方法

ssb 使用布尔变量来标记是否完成

我的问题是 ssb 接缝是事件调度线程和新创建的线程中的不同对象,即使 ssb 被分配给最终变量。当 statusTask 请求 ssb.isDone() 时,即使我确定冗长的任务已经完成且没有错误,它也会返回 false。

伪示例:

该代码将打印出不同的对象。顺便说一下,swing 应用程序使用 EJB3 与 JBoss 4.2.3 通信,查找是使用 JNDI 完成的。

有没有人有任何类似的经验或理解为什么每个线程中的对象都不同?感谢您的任何意见!

0 投票
1 回答
1638 浏览

java - EJB - 为有状态会话 Bean 执行 JNDI 查找时出现序列化错误

在我的 EJB 项目中,我有这个会话 Bean(有状态):

StatefulShopCartLocal 接口:

当我在应用程序客户端项目中进行查找时:

我收到此错误:

我认为这是该会话 bean 的序列化问题,但我做错了什么?

谢谢。

0 投票
1 回答
1105 浏览

transactions - 在同一个 SFSB 中调用事务方法

是否可以从有状态 EJB 本身调用事务方法?说得更清楚:

现在我想要实现的是让用户调用 myMethod(); 我想确保在没有 JTA 事务的情况下执行此方法。在这个电话之后,我想调用一个 save(); 将在事务中运行的方法。

如果我使用 ctx.getBusinessObject(-) 方法,我会得到:

警告:在调用 EJB MyService 方法时发生系统异常 public void com.test.MyService.save() javax.ejb.IllegalLoopbackException: Illegal Reentrant Access : Attempt to make a loopback call on method 'public void com.test.MyService .save() 用于有状态会话 bean MyService

SFSB 不支持内部调用吗?

I'm running Glassfish 3.1.1.

0 投票
2 回答
531 浏览

concurrency - 一个客户端可以同时访问 SFSB 吗?

我知道有状态的 EJB 可以由特定的客户端同时访问。容器正在序列化请求并一个接一个地执行它们。

问题是——你能设置 EJB 容器让并发访问 SFSB 吗?

我知道我有一个@AccessTimeout允许我配置特定客户端可以多次同时访问 SFSB。但是,它允许我指定根本不允许并发访问让容器序列化请求。

EJB 规范是否禁止这样的事情?我知道我可以使用 Singleton EJB 实现并发访问@ConcurrencyManagement,但我只是好奇是否可以设置一些特定于供应商的配置属性以允许 SFSB 的这种行为。

提前致谢!

0 投票
1 回答
3671 浏览

java - 当客户端返回时,有状态会话 bean 如何重新获得状态?

如果有状态会话 bean 将要钝化,它的状态将被写入硬盘,然后 bean 实例将被释放以服务其他请求(至少这是我的理解)。当同一个客户端再次处于活动状态时,bean 实例将从硬盘读取状态以重新获得状态。但是 bean 实例如何知道它必须为哪个客户端读取哪个文件来维护状态呢?

我对 J2EE 很陌生,所以如果我提出一个非常幼稚的疑问,请原谅我。如果我需要知道任何其他主题来理解这一点,请指出正确的方向。

0 投票
3 回答
701 浏览

dependency-injection - EJB 3.1 设计难题 - 需要从 MDB 实例化有状态 Bean

最近我学到了很多关于 EJB3.1 的知识,但显然还不够。这是我的悲惨故事...

我与可以上传批处理文件的 servlet 发生争执。servlet 验证文件,将文件数据存储在数据库中,并向队列发送已接收到新批次的消息。这一切都很好。

我有一个部署了 ejb-jar 的耳朵,它有一个 MDB,用于侦听新的批次接收到的消息。

它还有一个执行实际批处理的有状态 EJB(使用无接口视图)。EJB 具有对无状态 JPA 实体服务 bean 的引用,因此需要进行容器管理以获取容器注入的 EntityManager。

每当 MDB 接收到消息时,我都需要创建有状态处理器 bean 的实例。我找不到任何涵盖这种情况的示例/教程。

我曾尝试将有状态 bean 注入 MDB,但它不起作用:

显然这是一种糟糕的设计方法,因为 MDB 本质上是无状态的,因此不应该注入有状态的 EJB。这是有道理的。

我的问题是当 MDB 接收到消息并确保 EJB 是容器管理时,我还能如何实例化我的有状态 EJB?