java Servlet的应用的有关问题

java Servlet的应用的问题~
     现在有这样一个监控软件,它需要监控一些主机的状态信息,这些被监控的主机称为node。每个node会每隔十秒向监控软件发送自己的状态信息(例如cpu占用率,内存占用率等),监控软件收集到这些信息以后需要有一个Web端的展示,用一些图表等元素。
   我现在遇到的问题是 我把接收到的监控信息暂存在内存中,在web页面上展示的时候需要把内存的数据显示在页面上,但是我在servlet里读内存信息CurrentInfo(CurrentInfo是存储监控数据的一个类)读出来的总是空值,好像是只有在同一个main函数里才能读得到。
   有同学说可以用session来解决这个问题,无奈我对java servlet,session了解甚微,具体该如何设计才能满足需要,只能求教于牛人们啦。java Servlet的应用的有关问题
------解决方案--------------------
引用:
Quote: 引用:

你的 servlet 主机处于监听状态,其它的 node 主动上报它们的实时状态?
如果是这种模式的话,你的 servlet 应该要考虑到当 node 当机或者与 servlet 相连接的网络出现故障的意外情况。因为这个时候, node 不可能再发更新信息到 servlet。

以上是友情提醒,下面说楼主的问题
1、请确认 node 的状态信息已经被 servlet 准确接收到了。
2、serlvet 端通过什么接收信息,使用什么通信协议,有点怀疑楼主的 servlet 和监听程序不是同一个进程,或者数据没有共享到,甚至楼主的 CurrentInfo 只是一个局部变量,不是全局变量
3、楼主同学说的用 session,偶想不到这个需求需跟 session 有什么必然联系,如果搞清楚了,烦请楼主赐教
4、本人认为,楼主的需求当用单态模式比较好:
public class CurrentInfo {
    private staitc final CurrentInfo instance = new CurrentInfo();
    public static CurrentInfo getInstance(){
        return instance;
    }
    private CurrentInfo(){ }
    // 存储或读取 node 信息的相关方法(略)
}

使用时 
CurrentInfo ci = CurrentInfo.getInstance();
ci.updateNode(......); // 更新node 信息
......
ci.getAllNode()...... // 读取全部 node 信息

      其实我是用一个名叫UDPServer的类来接收监控信息的,node都通过UDP SOCKET向监控软件发送消息。接收到的信息放在全局变量CurrentInfo中,好像和Servlet不是同一个进程的,所以读不出数据来。
   用单态模式就能共享信息吗,感觉还是两个进程的意思。因为我一开启Tomcat监控软件就一直在接收监控消息了,但是这时候可能没人访问Servlet。


单态模式只能在同一个进程中共享数据,两个进程数据想要共享很麻烦,我也不会
建议你把 UDP Server 的启动放到 tomcat 里进行,这样你还可以做个页面来让用户在浏览器上启动或停止UDP的监听
------解决方案--------------------
还是使用文件或者数据库这样的形式来存储吧,java的进程间数据共享也没有什么特别的解决方案了。