Using a4j:push with JMS support works fine when using basic topic names only. But using a4j:push components, which are registered to a specific subtopic name, never receive data.
For example I have a JMS topic "mytopic".
The topic is initialized on application start, using a JSF SystemEventListener:
For demonstration purposes there are three different pages with a4j:push components registered to different topic addresses:
JMS messages with subtopic names are triggered using the subtopic-workaround described here: https://developer.jboss.org/wiki/CreatingSubtopicWithJMSPush
For any JMS message (with or without subtopic) page 1 and page 2, which are registered to subtopics, never receive data (this is the bug ).
Page 3 always receives data (as expected).
After debugging, I think the subtopic information gets lost in JMSTopicsContextImpl$JMSConsumerContext lines 206-217. There "getOrCreateTopic(topicKey)" is called with the topicKey that correctly contains the subtopic name. The returned topic "pushTopic" is the one that was created on application start. It contains an internal TopicKey without subtopic name. When calling "pushTopic.publish(messageData)" in line 213 the pushTopic has no information about the subtopic any more. Internally TopicImpl holds a collection of connected sessions (which is filled correctly) but it cannot get the correct PublishingContext (see TopicImpl line 63) because it uses its internal key (without subtopic name) to access the map.
I tried a patched version where the subtopic name is propagated into the TopicImpl.publish(...) method and getPublishingContext(...) is called with a new key that contains the subtopic name if available. Then all pages receive their data as expected.