jms - how to make jsp receive activemq offline message -


i have web app, want is: if user executes struts action successfully, user b can receive message when he/she opens jsp page.

my web.xml is:

<context-param>     <param-name>org.apache.activemq.brokerurl</param-name>     <param-value>tcp://localhost:61616</param-value> </context-param> <context-param>   <param-name>contextconfiglocation</param-name>   <param-value>classpath:applicationcontext.xml</param-value> </context-param> <listener>   <listener-class>org.springframework.web.context.contextloaderlistener</listener-class> </listener> <filter>     <filter-name>struts2</filter-name>     <filter-class>org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter</filter-class>     <async-supported>true</async-supported> </filter> <filter-mapping>     <filter-name>struts2</filter-name>     <url-pattern>/*</url-pattern> </filter-mapping> <servlet>     <servlet-name>ajaxservlet</servlet-name>     <servlet-class>org.apache.activemq.web.ajaxservlet</servlet-class>     <async-supported>true</async-supported> </servlet>  <servlet-mapping>     <servlet-name>ajaxservlet</servlet-name>     <url-pattern>/amq/*</url-pattern> </servlet-mapping> 

jsp :

<head> <script type="text/javascript" src="<%=path%>/js/jquery.min.1.8.3.js"></script> <script type="text/javascript" src="js/amq_jquery_adapter.js"></script> <script type="text/javascript" src="js/amq.js"></script>  <script type="text/javascript">   var amq = org.activemq.amq;   amq.init({      uri: 'amq',      logging: true,     timeout: 20   });    var myhandler =   {     rcvmessage: function(message)     {          alert("received "+message);     }   };    amq.addlistener("myid", "topic://msgtopic",myhandler.rcvmessage); </script>  </head> 

context.xml of tomcat :

<resource name="jms/activemqconnfact" authc="container" type="org.apache.activemq.pool.pooledconnectionfactory"  description="jms connection factory" factory="org.apache.activemq.jndi.jndireferencefactory" brokerurl="tcp://localhost:61616" brokername="localhost" maxconnections="10" /> <resource name="jms/msgtopic" authc="container" type="org.apache.activemq.command.activemqtopic"  description="my sending topic" factory="org.apache.activemq.jndi.jndireferencefactory" physicalname="msgtopic" /> 

spring config xml :

<bean id="jmstemplate" class="org.springframework.jms.core.jmstemplate">       <constructor-arg ref="activemqconnectionfactory" />       <property name="sessiontransacted" value="false" />       <property name="defaultdestination" ref="jmstemplatedest" />       <property name="deliverypersistent" value="false" />    </bean>     <bean id="msgaction" class="example.amq.web.msgaction" />     <bean id="mydestinationresolver" class="org.springframework.jms.support.destination.beanfactorydestinationresolver" />     <jee:jndi-lookup id="activemqconnectionfactory" jndi-name="jms/activemqconnfact" expected-type="javax.jms.connectionfactory" />     <jee:jndi-lookup id="jmstemplatedest" jndi-name="jms/msgtopic" expected-type="javax.jms.topic" /> </beans> 

struts.xml:

<struts>  <constant name="struts.action.excludepattern" value="/amq/*"/> <constant name="struts.devmode" value="false" /> <package name="default" extends="struts-default">  <action name="sendmsg" method="sendmsg" class="msgaction"> </action>  </package>  </struts> 

struts action :

public class msgaction { @autowired private jmstemplate jmstemplate; public void sendmsg() { this.jmstemplate.send(new messagecreator(){ @override public message createmessage(session session) throws jmsexception { textmessage txtmsg = session.createtextmessage(); txtmsg.settext("hello activemq!"); return txtmsg; } }); }  } 

the activemq web console looks like: enter image description here

topic name "msgtopic".

if open jsp, trigger send message action, there alert message on jsp page, if close jsp, trigger send message action, , open jsp latter, there no alert message.

so how make jsp can receive message sent when jsp closed?


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -