开发者

ActiveMQ AJax Client

开发者 https://www.devze.com 2022-12-28 11:25 出处:网络
I try to write a simple Ajax client to send and receive messages. It\'s successfully deployed but I have never received msg from the client. I am beating myself to think out what I am missing, but sti

I try to write a simple Ajax client to send and receive messages. It's successfully deployed but I have never received msg from the client. I am beating myself to think out what I am missing, but still can't make it work.

Here is my code:

  1. I creat a dynamic web application named: ActiveMQAjaxService and put activemq-web.jar and all neccessary dependencies in the WEB-I开发者_如何转开发NF/lib folder. In this way, AjaxServlet and MessageServlet will be deployed
  2. I start activemq server in command line: ./activemq => activemq successfully created and display:

Listening for connections at: tcp://lilyubuntu:61616

INFO | Connector openwire Started

INFO | ActiveMQ JMS Message Broker (localhost, ID:lilyubuntu-56855-1272317001405-0:0) started

INFO | Logging to org.slf4j.impl.JCLLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog

INFO | jetty-6.1.9

INFO | ActiveMQ WebConsole initialized.

INFO | Initializing Spring 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 | RESTful file access application at http://0.0.0.0:8161/fileserver

INFO | Started SelectChannelConnector@0.0.0.0:8161

3) index.xml, which is the html to test the client:

<?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 of these, I deploy the web-app, and it's successfully deployed, but when I try it out in http://localhost:8080/ActiveMQAjaxService/index.html , nothing happens.

I can run the demo portfolioPublisher demo successfully at http://localhost:8161/demo/portfolio/portfolio.html, and see the numbers updated all the time. But for my simple web-app, nothing really works.

Any suggestion/hint is welcomed. Thanks so much

Lily


Try going to the management web console; web-page, and seeing if you can send a message to your broker from that context, that might go along way towards directing you towards the problem.


I set up the web.xml in web application as following 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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号