Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要澄清Java有状态bean吗_Java_Web Services - Fatal编程技术网

需要澄清Java有状态bean吗

需要澄清Java有状态bean吗,java,web-services,Java,Web Services,当阅读关于Java中有状态和无状态bean的文档时,我有点理解,但有一个一般情况让我感到困惑: 我有一个web服务,它需要内存中的数据来处理请求,这些数据通过web服务请求添加到内存中,而不是通过从数据库加载。为了简单起见,请考虑web服务提供了处理学生数据的方法,但首先,需要将一个班级中所有学生的数据放入内存中,假设数据只是暂时的,因此我们不会从任何数据库中放入和加载数据。 假设在第一步,我们有3个客户端调用web服务,将许多学生的数据添加到web服务中。 int getRankstudent

当阅读关于Java中有状态和无状态bean的文档时,我有点理解,但有一个一般情况让我感到困惑:

我有一个web服务,它需要内存中的数据来处理请求,这些数据通过web服务请求添加到内存中,而不是通过从数据库加载。为了简单起见,请考虑web服务提供了处理学生数据的方法,但首先,需要将一个班级中所有学生的数据放入内存中,假设数据只是暂时的,因此我们不会从任何数据库中放入和加载数据。 假设在第一步,我们有3个客户端调用web服务,将许多学生的数据添加到web服务中。 int getRankstudent说,在第二步,每个客户端调用一个web服务方法,该方法实现只是循环遍历所有学生的数据,并根据输入学生在特定主题上的分数检查其排名。就这样,将返回一个整数,我们不需要存储任何与客户机服务相关的东西,所以我想我们不需要有状态bean。然而,由于每次调用将学生数据放入服务后,这些数据都需要保留在内存中,因此我们这里似乎有某种有状态的东西,但我不知道它被称为什么,这就是所谓的有状态web服务。
谢谢你的建议。

这听起来像是缓存。定期更新内存中的数据块以节省网络延迟;这是可能的,因为块不是太大

我认为任何标准的缓存解决方案都可以。您只需在加载值时小心,以确保读取操作不会进行,并确保这是一个有序的过程。多个客户端不应有任何机会损害其他任何人的数据


我同意——您不需要有状态会话bean。您需要缓存。

谢谢。缓存听起来很复杂,如果我有一个全局数据收集对象,而我只是将项目添加到该列表中,该怎么办?缓存应该主要被读取-从中读取的次数要比写入的次数多得多。听起来您的多客户端加载操作是周期性的,没有写操作。这是真的吗?如果没有,您只需在写操作期间不时同步无效值,以确保没有人看到过时的数据。查看产品-EhCache和Terracotta是开源的。连贯性并不重要。如果数据量不是太大,而且性能是第一优先考虑的,那么我应该只使用全局数据收集而不是缓存吗?不包装全局数据通常是个坏主意。无论您是自己编写还是使用他人的,我所描述的是一个组件,它隐藏了您所称的内部全局数据收集。为什么要公开一份清单?有些人花了和Terracotta或EhCache的人一样多的时间开发开源缓存,他们可能学到了一些你不知道的关于如何做好它的事情。为什么不利用它呢?你说得对——自己动手意味着速度快,依赖少一点。您的建议。您是否建议您的开箱即用的全局集合在所有用例下都比市场上多年的缓存性能更好?您是否也在暗示编写缓存的人不关心性能?你的思维过程很愚蠢。