在第一个程序中,我把topicConnectionFactory 变量的地址打印出来,可是地址的值总是在两个值之间变化,有时候为org.jboss.mq.SpyConnectionFactory@95c083,有时候为org.jboss.mq.SpyConnectionFactory@16fa474,也就是说JNDI的名字与服务器段的对象不是1对1的关系!我这样处理正确吗?

解决方案 »

  1.   

    你这样做是可以的,一般情况下都是做一个消息操作的类,有一个init()就是执行一些lookup和初始化的操作。初始化之后就可以直接发送消息了,然后有一个stop()方法,释放一些连接和对象什么的。
      

  2.   

    to hq1305018(跃强) ----------------------------------------------------我准备做一个相当于C/S模式的JMS应用,有N个Swing客户端,我想在客户端启动时,就将TopicConnectionFactory、Topic建立好,然后在程序退出时再close()掉。不过我就是担心当客户端过多时,会不会造成后续的客户端拿不到TopicConnectionFactory、Topic。
      

  3.   

    to hq1305018(跃强) 还有就是我取到的TopicConnectionFactory的内存地址这么不相同啊--------------------------------------------------------------
    在第一个程序中,我把topicConnectionFactory 变量的地址打印出来,可是地址的值总是在两个值之间变化,有时候为org.jboss.mq.SpyConnectionFactory@95c083,有时候为org.jboss.mq.SpyConnectionFactory@16fa474,也就是说JNDI的名字与服务器段的对象不是1对1的关系!我这样处理正确吗?
      

  4.   

    把消息操作全部封装到一个类里面,客户端启动时建立一个消息操作类的实例,执行init()方法,然后客户端可以用这个实例发消息,客户端退出前,执行消息操作实例的stop()方法。
    每个客户端得到的Factory是不同的,但不用担心过多的客户端会得不到Factory。