我不了解stateless session beans。文档说实例变量可能包含客户端特定状态,然后说当方法完成时不应保留状态。
假设有一个方法X和两个客户端同时被调用。方法X将客户端名称保存在实例变量中。我看到当多个线程同时调用相同的方法时会出现问题。
T1访问X和X在实例变量中设置客户端名称并休眠。 T2访问X和X在实例变量中设置客户端名称并休眠。 T1恢复,X现在看到T2的数据。
这不是问题吗?或者,容器是否为每个客户端创建一个新实例并在返回调用后销毁ejb?
其次 - 客户端可能会更改池化无状态bean中实例变量的状态,并且此状态将保留到池化无状态bean的下一次调用。
这是否意味着同一客户端可以在不同的方法调用中查看其数据?或者它是否意味着不同的客户端在方法调用中查看彼此的数据?
答案 0 :(得分:1)
这不是问题吗?不是不是,第二个客户端在第一个完成请求之前不会获得对同一个bean实例的引用(它与线程无关)调度机制,它根据请求工作。)
这是否意味着同一个客户端可以在不同的方法调用中查看其数据?或者它是否意味着不同的客户端在方法调用中看到彼此的数据?是的,对于这两个问题,如果从池中为两个不同的请求获取相同的bean实例。