- 浏览: 961512 次
- 性别:
- 来自: 江西上饶
文章分类
- 全部博客 (460)
- p.spring (56)
- p.maven (20)
- p.ant (17)
- p.jee (18)
- p.jse (33)
- p.ofbiz (31)
- p.软件工程 (8)
- p.struts2 (5)
- p.hibernate (5)
- linux (25)
- 设计模式 (2)
- p.javascript (11)
- 硬件 (1)
- p.jsp (2)
- p.windows批处理 (1)
- 操作系统问题 (5)
- 算法 (1)
- p.mysql (7)
- p.sql (5)
- p.c (1)
- google产品 (0)
- 内存 (1)
- p.struts (1)
- p.freemarker (7)
- p.css (4)
- p.log4j (10)
- p.html (3)
- 淘宝产品 (0)
- 其他 (3)
- 编译器 (0)
- svn (4)
- p.spring.security (11)
- 图形 (0)
- p.xml (1)
- p.ssh (0)
- p.jquery (4)
- p.jdbc (3)
- p.flex (0)
- p.c++ (0)
- p.c#Net (0)
- p.assembly (0)
- p.sqlserver (0)
- p.其他 (3)
- p.webwork (21)
- p.wap (12)
- p.cglib (1)
- p.jee服务器 (11)
- windows (2)
- p.iphone (1)
- p.java.分布式与集群 (2)
- p.ibatis (16)
- p.eclipse (5)
- 架构 (2)
- http协议 (5)
- 我的个人标准 (2)
- 多线程 (1)
- 奇怪问题 (5)
- p.jira (13)
- p.httpclient (1)
- 服务器.apache (11)
- 安全防范 (1)
- p.PODAM (1)
- p.junit (16)
- fop (2)
- 硬盘安装 (1)
- powerdesigner (0)
- 单元测试 (1)
- apache commons (4)
- tomcat+apache集群 (10)
- 各类诡辩 (1)
- 安卓 (8)
- qvod (1)
- java编程基础知识考试考点及答案 (0)
- 工作总结 (4)
- oracle (0)
- spring的util工具 (3)
- json (2)
- maven (3)
- jms (19)
- p.bat (3)
- hadoop (2)
- git (3)
- nginx (1)
- p.移动开发 (1)
- shiro (3)
- 游戏破解 (1)
- react-native (7)
- ios开发 (1)
- webmagic (6)
- socks5 (1)
最新评论
-
weituotian:
说的不好,没人看的
公司系统中的菜单功能和权限功能 -
石不易:
非常详细的注解~
绑定端口和IP,Listen 与VirtualHost指令 -
spring_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
spring mvc -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装 -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装
REST
通过activemq提供的servlet
通过这样的配置,代理的消息目的地就通过下面的RUI路径暴露出来.比如,STOCKS.JAVA消息主题就被映射到
下面的URI上:http://localhost:8161/demo/message/STOCKS/JAVA?type=topic
Ajax API
首先需要使用ajax servlet
在页面引用js文件
<script type="text/javascript" src="amq/amq.js"></script>
<script type="text/javascript">
//指定url地址
amq.uri='/amq';
</script>
发送消息
amq.sendMessage("topic://TEST", "message");
如果你打算订阅某个特定的消息目的地(或多个消息目的地),你需要注册一个回调函数,当接收到一个
新消息时,会调用这个函数
通过 amq对象的addListener() 注册回调函数,该函数除了接受一个 回
调函数作为参数外,同时还接受一个订阅的消息目的和一个ID作为参数,使用该ID参数使得进一步处
理这个监听器成为可能.
对于新版本而言,整个js api已经发生了变化,使用了适配器的概念,如果想让它对jquery环境下运行,需要添加jquery适配器
其中主题是topic://MY.NAME
队列是channel://MY.NAME
api
//过滤器
amq.addListener( myId, myDestination, myHandler.rcvMessage, { selector:"identifier='TEST'" } );
多窗口浏览器
对于多窗口浏览器而言,他们的session是共享的,而ajax方式是基于session模式的,因此需要为每个标签页指定唯一id
org.activemq.Amq.init({
uri: 'amq',
logging: true,
timeout: 45,
clientId:(new Date()).getTime().toString() //id
});
由于会启用一个保持连接的方式等待消息到来,对于支持异步servlet的servlet3.0服务器,会具有更好的性能。
activemq使用 Jetty 6 Continuations ,来完成servlet3.0 的异步功能。
通过activemq提供的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>MessageServlet</servlet-name> <url-pattern>/message/*</url-pattern> </servlet-mapping>
通过这样的配置,代理的消息目的地就通过下面的RUI路径暴露出来.比如,STOCKS.JAVA消息主题就被映射到
下面的URI上:http://localhost:8161/demo/message/STOCKS/JAVA?type=topic
Ajax API
首先需要使用ajax servlet
<servlet> <servlet-name>AjaxServlet</servlet-name> <servlet-class>org.apache.activemq.web.AjaxServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AjaxServlet</servlet-name> <url-pattern>/amq/*</url-pattern> </servlet-mapping> <context-param> <param-name>org.apache.activemq.brokerURL</param-name> <param-value>tcp://localhost:61616</param-value> <description>The URL of the Message Broker to connect to</description> </context-param>
在页面引用js文件
<script type="text/javascript" src="amq/amq.js"></script>
<script type="text/javascript">
//指定url地址
amq.uri='/amq';
</script>
发送消息
amq.sendMessage("topic://TEST", "message");
如果你打算订阅某个特定的消息目的地(或多个消息目的地),你需要注册一个回调函数,当接收到一个
新消息时,会调用这个函数
通过 amq对象的addListener() 注册回调函数,该函数除了接受一个 回
调函数作为参数外,同时还接受一个订阅的消息目的和一个ID作为参数,使用该ID参数使得进一步处
理这个监听器成为可能.
var priceHandler = { _price: function(message) { if (message != null) { var price = parseFloat(message.getAttribute('bid')) var symbol = message.getAttribute('stock') var movement = message.getAttribute('movement') if (movement == null) { movement = 'up' } var row = document.getElementById(symbol) if (row) { // perform portfolio calculations var value = asFloat(find(row, 'amount')) * price var pl = value - asFloat(find(row, 'cost')) // now let’s update the HTML DOM find(row, 'price').innerHTML = fixedDigits(price, 2) find(row, 'value').innerHTML = fixedDigits(value, 2) find(row, 'pl').innerHTML = fixedDigits(pl, 2) find(row, 'price').className = movement find(row, 'pl').className = pl >= 0 ? 'up' : 'down' } } } }; function portfolioPoll(first) { if (first) { amq.addListener('stocks', 'topic://STOCKS.*', priceHandler._price); } } amq.addPollHandler(portfolioPoll);
对于新版本而言,整个js api已经发生了变化,使用了适配器的概念,如果想让它对jquery环境下运行,需要添加jquery适配器
其中主题是topic://MY.NAME
队列是channel://MY.NAME
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> <script type="text/javascript" src="js/jquery-1.11.1.min.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.do', logging : true, timeout : 200 }); </script> </head> <body> <div id="show">------------------------------------------------------------------------------------------------------------------</div> <script type="text/javascript"> function send() { //"topic://MY.NAME"(主题) or "channel://MY.NAME"(队列) or queue://队列 amq.sendMessage('topic://liyixing11', $('#value').val()); } </script> <div> <input type='button' value='send' onclick='send()' /> <input type='text' id='value' value='send' /> </div> </body> </html> <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> <script type="text/javascript" src="js/jquery-1.11.1.min.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.do', logging : true, timeout : 200 }); </script> </head> <body> <div id="show">------------------------------------------------------------------------------------------------------------------</div> <script type="text/javascript"> var id = new Date().getTime() + 'x'; var myHandler = { rcvMessage : function(message) { var show = $('#show'); show.html(show.html() + '<br>' + message); } }; $(function() { var show = $('#show'); show.html(show.html() + '<br>' + id); //第一个参数是ID //当使用完毕后,可以使用amq.removeHandler(myId)来移除监听 //"topic://MY.NAME"(主题) or "channel://MY.NAME"(队列) or queue://队列 amq.addListener(id, 'topic://liyixing11', myHandler.rcvMessage); }); </script> </body> </html>
api
//过滤器
amq.addListener( myId, myDestination, myHandler.rcvMessage, { selector:"identifier='TEST'" } );
多窗口浏览器
对于多窗口浏览器而言,他们的session是共享的,而ajax方式是基于session模式的,因此需要为每个标签页指定唯一id
org.activemq.Amq.init({
uri: 'amq',
logging: true,
timeout: 45,
clientId:(new Date()).getTime().toString() //id
});
由于会启用一个保持连接的方式等待消息到来,对于支持异步servlet的servlet3.0服务器,会具有更好的性能。
activemq使用 Jetty 6 Continuations ,来完成servlet3.0 的异步功能。
发表评论
-
activemq in action 翻译
2014-11-20 10:45 862http://jackyin5918.iteye.com/ca ... -
高并发
2014-11-16 21:58 1604垂直扩展 垂直扩展是一种用于增加单个ActiveMQ代理连接数 ... -
删除不活动的队列(Delete Inactive Destinations)
2014-11-16 16:41 1362一般情况下,ActiveMQ的queue在不使用之后,可以通过 ... -
代理网络中消息传递
2014-11-13 21:21 799常见的方式是让所有客户端都连接到一个中心代理,而这不是使用消息 ... -
企业部署
2014-11-13 14:26 697主从备份方式 多个代理 ... -
安全机制
2014-10-15 15:22 1252ActiveMQ中所有安全相关的概念都是通过插件的形式实现的. ... -
与spring结合
2014-10-15 14:06 796在Spring中嵌入ActiveMQ有四种方式:纯Spring ... -
activemq 消息存储
2014-10-13 17:03 2349JMS规范支持两种方式分发消息:持久化和非持久化。Active ... -
ActiveMQ配置 连接activemq
2014-10-08 10:13 39070activemq代理 JMS代理(如ActiveMQ bro ... -
ActiveMQ简介
2014-10-08 09:49 780支持跨平台跨语言等特点,由于它是用JAVA实现的一套中间件,跨 ... -
jms-spring
2014-09-30 10:37 938同步接收和同步发送的情况(使用JNDI) 异步接收消息 ... -
jms-事物
2014-09-29 16:52 687JMSRedelivered可以检查消 ... -
过滤器与消息选择器
2014-09-28 23:08 711过滤器 String filter = &quo ... -
发布订阅模式
2014-09-28 11:52 1029特点 1.通过话题通道进行交互。 2.可以有多个订阅者,订阅者 ... -
jms-点对点
2014-09-27 23:45 994在点对点模式中,消息创建者称为发送者,消息消费者称为接收者。 ... -
jms-message对象
2014-09-26 14:40 1213message必须通过session创建,以便完成对应的初始化 ... -
jms基础,与例子
2014-09-24 22:14 1019MOM,面向消息中间件的交互模式 各个系统间,可以认为 ... -
jms的两种模式
2014-09-23 22:49 2283JMS有两种通信方式 P2P,点对点 方式和 发布/订阅模式P ...
相关推荐
【Ajax和REST技术简介】 Ajax(Asynchronous JavaScript and XML)是一种网页开发技术,它允许网页在不刷新整个页面的情况下与服务器进行数据交换,提升了用户体验。REST(Representational State Transfer)是一种...
dataSnap Rest 跨平台的特性众主要是靠JSON来传输数据,通过HTTP,HTTPS 访问方法来获取所得到的数据. 技术牛人小满的作品。谢谢作者。共享给各位。
标题"activit6-rest用ajax如何访问-base64加密"主要涵盖了两个关键点:一是如何使用Ajax访问Activiti6的REST接口,二是如何使用Base64对数据进行加密处理。 1. Ajax访问Activiti6 REST接口: - **创建Ajax请求**:...
了解这些基础后,开发者可以进一步探索如何使用API-REST和AJAX来构建动态、高效的Web应用。同时,安全问题(如认证、授权)和性能优化(如分页、限流)也是开发RESTful API时需要考虑的关键点。在API-REST-master这...
基于Ajax与REST的WebServices研究与实现 很不错的一篇硕士文章
Apress 出版的介绍ajax和REST架构的书《Ajax and REST Recipes》pdf(带书签),由于上传文件大小的限制,这是第二个包。
书籍《Ajax and REST Recipes: A Problem-Solution Approach》的核心内容是向读者展示如何使用下一代Ajax和REST技术实现Web网站上常见任务的解决方案。Ajax(Asynchronous JavaScript and XML)是用于创建快速动态...
Apress 出版的介绍ajax和REST架构的书《Ajax and REST Recipes》pdf(带书签),由于上传文件大小的限制,这是第一个包。
基于Ajax_REST风格的WebService的设计与实现
【标题】"基于Ajax和SOA的Web应用架构的研究与应用"揭示了现代Web开发中的两种关键技术:Ajax(异步JavaScript和XML)以及Service-Oriented Architecture(面向服务的架构)。Ajax技术允许Web应用程序在无需刷新整个...
【标题】"CA2_ORM_REST_AJAX"是一个与Java相关的项目,由Simon Tougaard开发,主要涉及ORM(对象关系映射)、RESTful API和AJAX(异步JavaScript和XML)这三大核心技术。ORM是Java开发中的一个重要概念,它允许...
在IT行业中,API(应用程序接口)、REST(表述性状态转移)和AJAX(异步JavaScript和XML)是三个至关重要的概念,它们对于构建现代Web应用起着基石般的作用。让我们详细探讨这些技术及其关联。 首先,API...
本资料包中的"**WebCast20101012_PDF**"可能是一份详细的讲义,涵盖了如何使用WCF构建REST服务的基本概念、步骤和最佳实践。讲义可能会讲解RESTful服务的设计原则,如URI设计、HTTP动词的使用、状态码的意义等,以及...