2 Replies Latest reply on Aug 24, 2012 9:10 PM by Tom B-Oracle

    Reconnect does not work after PeerGoneException

      Application faced JMS PeerGoneException.
      And tried to recover by reconnecting to queue. but still reconnect is not successfull. it does not throw any exception but subscriber count on web logic console is zero. and no messages are consumed pening in Queue.

      1. Exception
      weblogic.jms.common.LostServerException: java.lang.Exception: weblogic.rjvm.PeerGoneException: No message was received for: '240' seconds
           at weblogic.jms.client.JMSConnection.dispatcherPeerGone(JMSConnection.java:1543)
           at weblogic.messaging.dispatcher.DispatcherWrapperState.run(DispatcherWrapperState.java:689)
           at weblogic.messaging.dispatcher.DispatcherWrapperState.timerExpired(DispatcherWrapperState.java:614)
           at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)
           at weblogic.work.ExecuteRequestAdapter.execute(ExecuteRequestAdapter.java:21)
           at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)
           at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)
      Caused by: java.lang.Exception: weblogic.rjvm.PeerGoneException: No message was received for: '240' seconds
           at weblogic.messaging.dispatcher.DispatcherWrapperState.onDisconnect(DispatcherWrapperState.java:391)
           at weblogic.rjvm.RJVMImpl$DisconnectEventDeliverer.run(RJVMImpl.java:1662)
           ... 3 more
      Caused by: weblogic.rjvm.PeerGoneException: No message was received for: '240' seconds
           at weblogic.rjvm.RJVMImpl$HeartbeatChecker.timerExpired(RJVMImpl.java:1591)
           at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)
           ... 3 more

      2. Reconnect code
      queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

                               Iterator it = //queueinfo iterator
                               while(it.hasNext()) {
                                    QueueInfo queueInfo = (QueueInfo) it.next();
                                    String selector = configureQueueSelector(queueInfo.getName());
                                    QueueReceiver receiver = null;
                                    if (selector == null || selector.trim().length() == 0) {
                                         receiver = queueSession.createReceiver(queueInfo.getQueue());
                                    } else {
                                         receiver = queueSession.createReceiver(queueInfo.getQueue(), selector);

      any help is appreciated.
        • 1. Re: Reconnect does not work after PeerGoneException
          Kalyan Pasupuleti-Oracle

          Try enable HTTP tunneling for both wls servers.

          This issue will be taken care.

          • 2. Re: Reconnect does not work after PeerGoneException
            Tom B-Oracle

            A 240 second peer-gone timeout typically occurs after an atypical "silent" network failure that does not force a socket error (such as a physical cable disconnect or a firewall activation).

            WebLogic detects such failures by checking whether periodic "heartbeat" packets get through the TCP/IP connection.


            Verify that you have network connectivity from the problem client.

            Verify that other clients to the WLS remain connected.

            Check your WL server log for errors - this may yield a clue to the problem.

            If this doesn't help, please respond with a description your network addressing and topology. Namely:

            - Client type (thin t3, old-style thin, thick, or install)
            - URL
            - Are there intervening NAT/firewalls/load-balancers?