java - 无状态 ejb 中的客户端特定状态

标签 java ejb

我不明白stateless session beans 。文档说实例变量可能包含客户端特定状态,然后说当方法完成时不应保留状态。

假设有一个方法 X 和两个客户端同时调用。方法 X 将客户端名称保存在实例变量中。我发现当多个线程同时调用同一个方法时会出现问题。

T1 访问 X,X 在实例变量中设置客户端名称并 hibernate 。 T2 访问 X,X 在实例变量中设置客户端名称并 hibernate 。 T1 恢复,X 现在可以看到 T2 的数据。

这不是问题吗?或者,容器是否为每个客户端创建一个新实例,并在调用返回后销毁 ejb?

Secondly-- Clients may, however, change the state of instance variables in pooled stateless beans, and this state is held over to the next invocation of the pooled stateless bean.

这是否意味着同一个客户端可以通过不同的方法调用查看其数据?或者这是否意味着不同的客户端可以通过方法调用看到彼此的数据?

最佳答案

这不是一个问题吗?不,不是,在第一个客户端完成其请求之前,第二个客户端不会获得对同一个 bean 实例的引用(它与线程无关)调度机制,它基于每个请求工作)。

这是否意味着同一个客户端可以通过不同的方法调用查看其数据?或者这是否意味着不同的客户端可以跨方法调用看到彼此的数据? 对于这两个问题,如果从池中为两个不同的请求获取相同的 bean 实例,则确实如此。

关于java - 无状态 ejb 中的客户端特定状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30600111/

相关文章:

java - 枚举中的枚举

Java 总是给我错误的巨大数字结果

Java:随机类建议

java - 一条 JMS 消息由消息驱动 Bean 处理两次

optimization - WebSphere Application Server EJB 优化

java - 远程客户端上的 EJB

java - GWT 中可以有树形网格吗?

java - 在运行时更改级别(通过 log4j.properties 和通过代码)

jsp - Java EE 错误 : javax. enterprise.inject.UnsatisfiedResolutionException:Api 类型

java.rmi.RemoteExeption : CORBA NO_RESPONSE root cause analysis