activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Dean (JIRA)" <>
Subject [jira] Updated: (AMQ-2948) Support ajax clients in multiple windows/tabs in a single browser
Date Thu, 30 Sep 2010 21:12:40 GMT


Alex Dean updated AMQ-2948:

    Attachment: support-multiple-ajax-clients-per-session.patch

This patch replaces the original one I attached to this ticket.

Changes since original patch:
 - private MessageListenerServlet.ClientConsumerState class refactored to AjaxWebClient (extends
 - private MessageListenerServlet.Listener class refactored to AjaxListener.  AjaxWebClient
uses an instance of Listener/AjaxListener, so this needs to be public.
 - AjaxWebClient & associated data for each client are now stored in a MessageListenerServlet
instance variable (ajaxWebClients) rather than in sessions.
 - Timer/TimerTask code added to examine ajaxWebClients and clean up clients which have not
been accessed in the past minute.  This solves the thread-leakage we were seeing in my initial
 - JavaScript to append clientId parameter to all requests moved to amq.js, so no changes
are required to the jquery, prototype, or dojo adapters.

New patch also includes a new JS test, and an updated chat.html which uses a clientId (so
you can open chat.html in multiple windows in the same browser) for a quick test.

> Support ajax clients in multiple windows/tabs in a single browser
> -----------------------------------------------------------------
>                 Key: AMQ-2948
>                 URL:
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 5.4.1
>         Environment: OSX 10.6
> Centos 5.4
>            Reporter: Alex Dean
>         Attachments: support-multiple-ajax-clients-per-session.patch
> In current ajax code, there is a 1-1 relationship between ajax client and session.  Since
multiple windows in the same browser share the same session, it's impossible for the ajax
code to update both windows.  Either 1 or the other will receive messages, but not both.
> The attached patch allows an optional 'clientId' string to be passed to the JavaScript
amq.init() function, similar to that supported by the REST servlet.  This clientId string
is sent to the server with every ajax request.  In MessageListenerServlet, a new consumer
is created for every new sessionid+clientId, allowing multiple windows in the same browser
to send & receive messages independently.
> For some (currently) unknown reason, IE7 cannot send messages from multiple windows.
 2 IE7 windows can receive messages independently with no errors, but once either IE7 window
sends a message, both windows cease receiving data.  This behavior is not seen in FF (OSX
or WinXP) or Safari (OSX).  All those browsers are able to send & receive simultaneously
in multiple windows with no errors.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message