ActiveMQ AJax Client

I am trying to write a simple Ajax client for sending and receiving messages. It deployed successfully, but I never got a message from the client. I'm beating myself up to come up with what I'm missing, but still can't get it to work.

Here is my code:

  • I am creating a dynamic web application named: ActiveMQAjaxService and put activemq-web.jar and all required dependencies in WEB-INF / lib folder. This way the AjaxServlet and MessageServlet will be deployed
  • I am running activeemq server in command line: ./ activemq => activeemq is successfully created and displayed:

Listening for connections at: tcp: // lilyubuntu: 61616
INFO | Openwire connector launched
 INFO | ActiveMQ JMS Message Broker (localhost, ID: lilyubuntu-56855-1272317001405-0: 0) started
 INFO | Login to org.slf4j.impl.JCLLoggerAdapter (org.mortbay.log) via org.mortbay.log.Slf4jLog
 INFO | Berth-6.1.9
 INFO | ActiveMQ WebConsole initialized.
 INFO | Spring initialization FrameworkServlet dispatcher '
 INFO | ActiveMQ console at http://0.0.0.0:8161/admin
 INFO | Initializing Spring root WebApplicationContext
 INFO | Connector vm: // localhost Started
 INFO | Camel console at http://0.0.0.0:8161/camel
 INFO | ActiveMQ Web Demos at http://0.0.0.0:8161/demo
 INFO | Application for accessing RESTful files at http://0.0.0.0:8161/fileserver
 INFO | Started by SelectChannelConnector@0.0.0.0 : 8161

3) index.xml which is the html for client validation:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<script type="text/javascript" src="amq/amq.js"></script> 
<script type="text/javascript">amq.uri='amq';</script> 
<title>Hello Ajax ActiveMQ</title> 
</head> 
<body> 
<p>Hello World!</p> 
<script type="text/javascript"> 
amq.sendMessage("topic://myDetector", "message"); 
var myHandler = 
{   
  rcvMessage: function(message) 
  { 
     alert("received "+message); 
  } 
}; 

function myPoll(first) 
{ 
        if (first) 
        { 
                amq.addListener('myDetector', 'topic://myDetector', myHandler.rcvMessage); 
        } 
} 

      

amq.addPollHandler (myPoll);      

4) Web.xml:  

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an "AS IS" BASIS, 
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
See the License for the specific language governing permissions and 
limitations under the License. 

      

->  

<display-name>ActiveMQ Web Demos</display-name> 
<description> 
Apache ActiveMQ Web Demos 
</description> 

<!-- context config --> 
<context-param> 
    <param-name>org.apache.activemq.brokerURL</param-name> 
    <param-value>vm://localhost</param-value> (I also tried tcp://localhost:61616) 
    <description>The URL of the Message Broker to connect to</description> 
</context-param> 

<context-param> 
    <param-name>org.apache.activemq.embeddedBroker</param-name> 
    <param-value>true</param-value> 
    <description>Whether we should include an embedded broker or not</description> 
</context-param> 

<!-- servlet mappings --> 

<!-- the subscription REST servlet --> 
<servlet> 
    <servlet-name>AjaxServlet</servlet-name> 
    <servlet-class>org.apache.activemq.web.AjaxServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet> 
    <servlet-name>MessageServlet</servlet-name> 
    <servlet-class>org.apache.activemq.web.MessageServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    <!-- 
    Uncomment this parameter if you plan to use multiple consumers over REST 
    <init-param> 
            <param-name>destinationOptions</param-name> 
            <param-value>consumer.prefetchSize=1</param-value> 
    </init-param> 
    --> 

</servlet> 

<!-- the queue browse servlet --> 
<filter> 
  <filter-name>session</filter-name> 
  <filter-class>org.apache.activemq.web.SessionFilter</filter-class> 
</filter> 

<filter-mapping> 
  <filter-name>session</filter-name> 
  <url-pattern>/*</url-pattern> 
</filter-mapping> 

      

After all this, I deploy the web app and deploy it successfully, but when I try it at http: // localhost: 8080 / ActiveMQAjaxService / index.html , Nothing happened.

I can successfully run the Publisher Demo Portfolio at http: // localhost: 8161 / demo / portfolio / portfolio.html and keep the numbers up to date. But for my simple web app, nothing really works.

Any suggestion / hint is greatly appreciated. Many thanks

Lily

+2


a source to share


2 answers


Try going to the Web Management Console; web page and see if you can send a message to your broker from that context, which might go down the path towards the problem.



+1


a source


I have installed web.xml

in a web app as below and it works.



<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>msg_tomcat_activemq</display-name>
    <context-param>
        <param-name>org.apache.activemq.brokerURL</param-name>
        <param-value>tcp://192.168.1.105:61616</param-value>
    </context-param>

    <context-param>
        <param-name>org.apache.activemq.embeddedBroker</param-name>
        <param-value>true</param-value>
    </context-param>

    <servlet>
        <servlet-name>AjaxServlet</servlet-name>
        <servlet-class>org.apache.activemq.web.AjaxServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet>
        <servlet-name>MessageServlet</servlet-name>
        <servlet-class>org.apache.activemq.web.MessageServlet</servlet-class>
        <load-on-startup>1</load-on-startup>

     </servlet>

        <servlet-mapping>
        <servlet-name>AjaxServlet</servlet-name>
        <url-pattern>/amq/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>MessageServlet</servlet-name>
        <url-pattern>/message/*</url-pattern>
    </servlet-mapping>

<filter>
      <filter-name>session</filter-name>
      <filter-class>org.eclipse.jetty.continuation.ContinuationFilter</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>session</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>org.apache.activemq.web.SessionListener</listener-class>
    </listener>
</web-app>

      

0


a source







All Articles