问题标签 [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.
java - 有什么方法可以中断有状态会话 bean?
背景:我有一个操作可能在运行时锁定的示例,如果发生这种情况,我必须能够处理这种可能性并终止操作。该解决方案必须与应用程序服务器无关,因此不能选择具有超时值的容器管理事务。
实际问题:我在有状态会话 bean 中运行操作并使用外部 @Timeout 方法对其进行监视的解决方案的一个想法,但要使其正常工作,我需要能够中断或取消该会话 bean。有没有办法做到这一点?
java - 如何管理有状态的 Web 服务?
我正在尝试了解 J2EE 和 Web 服务(在 GlassFish 3.1 中)。这个问题是对此的一个跟进。
我已经弄清楚如何使用无状态会话 Bean 和 Web 服务。我实际上只是@WebService
出于方便而使用 Web Service (),因为我宁愿不手动解析消息。虽然如果可能的话,我更喜欢比 SOAP 更轻的东西。但是,当我想保持某种状态(例如通过有状态会话 Bean)时,我遇到了问题。我已经搜索了这个站点和其他几个建议我避免这种情况的站点,因为它可能导致难以找到错误并限制可扩展性。
假设我有一个用户刚刚执行了“userLogin”方法并且成功了。然后我如何在服务器上知道用户已经登录。例如,在登录后,用户可能会通过 SOAP(不带任何参数)调用“getProfile()”,我会为该用户返回正确的信息。我知道通过附加到我的有状态会话 Bean 是不可能的,@WebService
因为这仅对@Stateless
.
如果我使用 HttpSession(带有 HttpServlet)和无状态会话 Bean,我知道如何存储状态,但是我不能使用生成良好的 SOAP 消息。
所以我的问题是:我将如何解决维护用户状态的问题,或者调整问题以使我不需要状态?
java - EJB3如何确保在删除bean之前发生事情
假设我让我的客户使用 Stateful Session Bean 预订飞机上的座位。如果客户端显式调用了我的 Remove 方法,他的所有保留都将被取消,然后 bean 将被删除。
但是,如果客户端空闲一段时间并且 Bean 被钝化,如果 Bean 在被钝化时超时,它将被删除而不调用我的任何函数。因此,如果有人能告诉我如何确保在删除 bean 时取消预订,我将不胜感激。如果我使用@PreDestroy 注释,它会解决这个问题吗?
最好的问候,詹姆斯·特兰
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上的原始帖子
java - 在 Java Swing 中使用 SwingWorker 的有状态会话 bean 的不同对象
我在 Swing 中有一个自定义进度条面板,我想在其中显示冗长操作的进度。所以我创建了两个swingworkers:
- 在 bean 管理的有状态会话 bean (longyTask) 中执行实际冗长操作的一种
- 一种基于标志(statusTask)在循环中向 ssb 询问进度的方法
ssb 使用布尔变量来标记是否完成
我的问题是 ssb 接缝是事件调度线程和新创建的线程中的不同对象,即使 ssb 被分配给最终变量。当 statusTask 请求 ssb.isDone() 时,即使我确定冗长的任务已经完成且没有错误,它也会返回 false。
伪示例:
该代码将打印出不同的对象。顺便说一下,swing 应用程序使用 EJB3 与 JBoss 4.2.3 通信,查找是使用 JNDI 完成的。
有没有人有任何类似的经验或理解为什么每个线程中的对象都不同?感谢您的任何意见!
java - EJB - 为有状态会话 Bean 执行 JNDI 查找时出现序列化错误
在我的 EJB 项目中,我有这个会话 Bean(有状态):
StatefulShopCartLocal 接口:
当我在应用程序客户端项目中进行查找时:
我收到此错误:
我认为这是该会话 bean 的序列化问题,但我做错了什么?
谢谢。
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.
concurrency - 一个客户端可以同时访问 SFSB 吗?
我知道有状态的 EJB 可以由特定的客户端同时访问。容器正在序列化请求并一个接一个地执行它们。
问题是——你能设置 EJB 容器让并发访问 SFSB 吗?
我知道我有一个@AccessTimeout
允许我配置特定客户端可以多次同时访问 SFSB。但是,它允许我指定根本不允许并发访问或让容器序列化请求。
EJB 规范是否禁止这样的事情?我知道我可以使用 Singleton EJB 实现并发访问@ConcurrencyManagement
,但我只是好奇是否可以设置一些特定于供应商的配置属性以允许 SFSB 的这种行为。
提前致谢!
java - 当客户端返回时,有状态会话 bean 如何重新获得状态?
如果有状态会话 bean 将要钝化,它的状态将被写入硬盘,然后 bean 实例将被释放以服务其他请求(至少这是我的理解)。当同一个客户端再次处于活动状态时,bean 实例将从硬盘读取状态以重新获得状态。但是 bean 实例如何知道它必须为哪个客户端读取哪个文件来维护状态呢?
我对 J2EE 很陌生,所以如果我提出一个非常幼稚的疑问,请原谅我。如果我需要知道任何其他主题来理解这一点,请指出正确的方向。
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?