试试下面的方法,实现ExceptionListener接口
...................
private static TopicConnection subConnection = null;
....................
class MsgListenerClass implements MessageListener,ExceptionListener
{
   public void onMessage(Message message)
  {
     .............
  }
  public void onException(JMSException jmse) 
 {    
     System.out.println("斷線"); 
     reConnection();    
     System.out.println("重新連線");    
      try
     {      
        this.subConnection.setExceptionListener(this);    
      }
      catch(JMSException jmsee)
     {    
        jmsee.printStackTrace();    
      }  
 }}

解决方案 »

  1.   

    ty楼上的。
     reConnection();
    :)
    别忘了给分。
    祝工作愉快
      

  2.   

    dragon525():How to do reConnection()?   Thanks!
      

  3.   

    将TopicConnection conn作为静态全局变量
    在main方法中创建连接,后加上
    this.conn.setExceptionListener(listener);
    在class MsgListenerClass 中写方法reConnection(); 来重新连接。思路大概是这样的,你可以试试....
      

  4.   

    我已经尝试过了,没有任何反应。onException()根本不处理。
    正如:http://www.chinaitlab.com/www/news/article_show.asp?id=31607
    所说:
    问. 用 Connection.setExceptionListener(ExceptionListener) 方法去尝试处理连接问题,但是当停止服务器的时候, 好像没有 JMSException 被触发;而且onException 方法也没被调用。这是一个 bug 吗?
      
      答: JMS 规范并没有指定传送给 ExceptionListener 的究竟是何异常,以及它们是何时被传送的,因此提供者们在如何处理连接问题上是多种多样的。这方面如果有问题的话,请与您的 JMS 提供者协商。谢谢dragon525(),有时间继续讨论!
      

  5.   

    哦,那可能与你使用的JMS产品有关吧,你用查看一下JMS产品相关开发文档吧
    --------------------------------------------------------------------------
    JMS 规范并没有指定传送给 ExceptionListener 的究竟是何异常,以及它们是何时被传送的,因此提供者们在如何处理连接问题上是多种多样的