This discussion is archived
2 Replies Latest reply: Aug 24, 2012 2:10 PM by Tom B RSS

Reconnect does not work after PeerGoneException

957739 Newbie
Currently Being Moderated
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);
                              }
                              receiver.setMessageListener(this);
                         }

any help is appreciated.
  • 1. Re: Reconnect does not work after PeerGoneException
    Kalyan Pasupuleti-Oracle Expert
    Currently Being Moderated
    Hi,

    Try enable HTTP tunneling for both wls servers.

    This issue will be taken care.

    Regards,
    Kal
  • 2. Re: Reconnect does not work after PeerGoneException
    Tom B Expert
    Currently Being Moderated
    Hi,

    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.

    Thoughts:

    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?

    HTH,

    Tom

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points