我有一个处理不同类型消息(对象消息)的MDB。我想跟踪MDB收到的消息数量,并记录收到的消息类型。
虽然我的MDB分布在多个JVM上,但我可以很好地跟踪单个JVM的计数。
在EJB中不鼓励使用静态变量,所以我们还有其他选择吗?
答案 0 :(得分:2)
一个想法:
我想到了一个@Singleton
EJB。我会称之为Statistics
,并在那里保留各种统计数据。每次发生需要统计信息的Xxx
事件时,都可以调用addToXxxCount()
方法。实际计数可从相应的getXxxCount()
获得。它需要对getXxxCount()
方法进行读锁定并在addToXxxCount()
上写入锁(请参阅单例EJB的并发性)。或者,您可以自己同步。
实际跟踪计数的变量(int
或long
)是非静态的,容器保证EJB只被实例化一次。您可以获得所有统计数据的中心参考点。