如何使用多个有状态bean实例?

时间:2011-05-19 09:46:12

标签: java-ee java-ee-6 glassfish-3

我在学校项目中遇到以下问题。

  1. 许多汽车都将他们的位置数据发送到无状态的Web服务,然后将其转储到java消息队列中。
  2. 此队列由消息驱动的bean处理,它计算一些内容并将其发送到缓存。
  3. 此缓存/缓冲区需要为每辆汽车保留一组较小的缓冲区对象,并通过将该汽车的内容发送到另一个系统来定期清空每个缓冲区。
  4. 我在第3步遇到了很多困难。我的第一个想法是为每辆车制作一个有状态的bean实例,这样系统中的每台机器都可以容纳一些。单例bean将跟踪所有汽车的缓冲区。这有望保持可扩展性。

    虽然这不是完成事情的方式,但似乎所有内容都指向注入和客户端与有状态bean之间的1-1关系,而我似乎需要1-many关系。

    经过一番研究后,我发现这些场景的在线信息充其量是模糊的,最糟糕的是无关紧要。我的书“用Glassfish 3开始Java EE 6平台”似乎根本没有解决它。我已经联系了我的techer,但他还没有回应,我很怀疑他真的对此很了解。

    我不愿意使用数据库,因为事情并不真正需要(而且不应该!)存储的时间超过绝对必要的时间。

    也许我错过了一些基本概念,或者我可能只是在思考问题而需要一种完全不同的方法。我的问题是你如何在这种环境中处理这类问题?我正在使用Glassfish 3.0.1。

2 个答案:

答案 0 :(得分:0)

为什么要使用有状态会话bean(你必须这样做)吗?我会写另一个StatelessSessionBean,它可以从缓存中返回值,然后用另一个webservice包装它。

答案 1 :(得分:0)

我认为你错过了缓存实现的一些东西。您可以使用简单的HashSet来缓存数据。 或者您可以使用现有的缓存框架,如memcache(谷歌缓存),这是非常高效的。见Memcache 如果要定期清空缓存,可以使用java.util 课程计时器。