[ 
https://issues.apache.org/jira/browse/AMQ-5155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14348653#comment-14348653
 ] 

Claudio Parodi commented on AMQ-5155:
-------------------------------------

Hi, 
I have created a patch for activemq 5.9.1 version that seems to work.

These are my changes for org.apache.activemq.transport.ws.StompSocket:

1. in doStart() I set transportListener to remove NPE:
{code}
@Override
    protected void doStart() throws Exception {
        socketTransportStarted.countDown();
                
stompInactivityMonitor.setTransportListener(this.getTransportListener());
    }
{code}

2. in onMessage(String data) I managed keepalive frame:
{code}
if (!transportStartedAtLeastOnce()) {
            LOG.debug("Waiting for StompSocket to be properly started...");
            try {
                socketTransportStarted.await();
            } catch (InterruptedException e) {
                LOG.warn("While waiting for StompSocket to be properly started, 
we got interrupted!! Should be okay, but you could see race conditions...");
            }
        }
        try {
              if (data!=null && data.equals("\n"))
                {
                    sendToActiveMQ(new KeepAliveInfo());
                }
              else {
                   
protocolConverter.onStompCommand((StompFrame)wireFormat.unmarshal(new 
ByteSequence(data.getBytes("UTF-8"))));
                }
        } catch (Exception e) {
            onException(IOExceptionSupport.create(e));
        }
{code}

Can I share with you my code in a better way?
Thanks
Claudio Parodi

> Heartbeat fails in STOMP over WebSockets
> ----------------------------------------
>
>                 Key: AMQ-5155
>                 URL: https://issues.apache.org/jira/browse/AMQ-5155
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 5.9.1, 5.10.0
>            Reporter: Arjan van den Berg
>            Assignee: Dejan Bosanac
>            Priority: Minor
>
> From AMQ-4740:
> I receive the following error after establishing a connection and heartbeat 
> through stomp.js. This seems to occur after the 'PING' is sent.
> ---------- stomp.js output
> <<< CONNECTED
> heart-beat:10000,10000
> session:ID:localhost.localdomain-45596-1396530920609-2:2
> server:ActiveMQ/5.10-SNAPSHOT
> version:1.1
> send PING every 10000ms 
> check PONG every 10000ms 
> <<< PONG 
> >>> PING 
> did not receive server activity for the last 20005ms 
> Whoops! Lost connection to ws://172.16.99.73:61614/stomp
> --------------------- activemq console ---------------
> WARN | Transport Connection to: StompSocket_19548821 failed: 
> java.io.IOException
> Exception in thread "ActiveMQ InactivityMonitor Worker" 
> java.lang.NullPointerException
> at 
> org.apache.activemq.transport.AbstractInactivityMonitor.onException(AbstractInactivityMonitor.java:314)
> at 
> org.apache.activemq.transport.AbstractInactivityMonitor$4.run(AbstractInactivityMonitor.java:215)
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> at java.lang.Thread.run(Thread.java:722)
> WARN | Transport Connection to: StompSocket_19548821 failed: 
> java.io.IOException
> Exception in thread "ActiveMQ InactivityMonitor Worker" 
> java.lang.NullPointerException
> at 
> org.apache.activemq.transport.AbstractInactivityMonitor.onException(AbstractInactivityMonitor.java:314)
> at 
> org.apache.activemq.transport.AbstractInactivityMonitor$4.run(AbstractInactivityMonitor.java:215)
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> at java.lang.Thread.run(Thread.java:722)
> For me it looks as if the StompInactivityMonitor is delivering its events to 
> the wrong Transport, i.e. it needs a "narrow()" when setting it up.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to